Python (красивый суп), возвращающий "none" для существующего html при сканировании - PullRequest
0 голосов
/ 04 ноября 2018

Я просто хочу получить HTML-строку поиска на сайте https://www.daraz.com.pk. Я написал код и попробовал его на "https://www.amazon.com"," https://www.alibaba.com", "https://www.goto.com.pk" и многих других, он работает нормально. Но он не работает на https://www.daraz.com.pk.

    from urllib.request import urlopen
    from bs4 import BeautifulSoup
    from urllib import request
    import ssl
    import requests

    ssl._create_default_https_context = ssl._create_unverified_context

    html =  urlopen("https://www.daraz.com.pk")
    bsObj = BeautifulSoup(html, features="lxml")
    nameList = bsObj.find("input", {"type": "search"})
    print(nameList)

возвращает нет , вместо этого он должен вернуть:

input type="search" id="q" name="q" placeholder="Search in Daraz" class="search-box__input--O34g" tabindex="1" value="" data-spm-anchor-id="a2a0e.home.search.i0.35e34937eWCmbI"

Я также пробовал подобный код на amazon, alibaba и некоторых других сайтах, которые успешно вернули html:

     html =  urlopen("https://www.amazon.com")
    bsObj = BeautifulSoup(html, features="lxml")
    nameList = bsObj.find("input", {"type": "text"})
    print(nameList)

Я тоже пробовал это так:

    bsObj=BeautifulSoup(requests.get("https://www.daraz.com.pk").content, 
    "html.parser")

    nameList = bsObj.find("input", {"type": "search"})
    print(nameList)

и, таким образом, селен:

    driver = webdriver.Firefox()
    driver.get("https://www.daraz.com.pk")

    time.sleep(2)
    content = driver.page_source.encode('utf-8').strip()
    soup = BeautifulSoup(content,"html.parser")
    time.sleep(2)
    officials = soup.find("input", {"type":"search"})
    print(str(officials))

но не удалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...