Webscraping с Beautiful Soup, запрашивает 2 diff HTML из браузера и запросы - PullRequest
0 голосов
/ 06 апреля 2020

Я работал над проектом для начинающих, где я в основном что-то ищу, и моя программа Python должна открыть эту конкретную страницу поиска Google, а также открыть первые 5 результатов поиска на разных вкладках. Для открытия веб-страницы / вкладок я использую модуль Webbrowser, а для определения того, какие URL-адреса результатов поиска необходимо открыть на других вкладках, я использовал Beautiful Soup для поиска ссылки.

args = ('+'.join(args)).lower()
google_url = f'https://www.google.com/search?q={args}'
webbrowser.open(google_url)                             #Opening the first Google search window
res = requests.get(google_url,timeout=5)
soup = BS(res.text,'lxml')

print(soup.prettify())                                 # HTML Code I used to select the tags

tab_urls = []                                           # Making a list of all URLs to be opened up

for data in soup.select("div[class = 'ZINbbc xpd O9g5cc uUPGi']"):
    a_tag = data.select_one('a[href]')
    if a_tag:
        if a_tag['href'].startswith('/url?q='):             # Figured that when HREF starts with '/url?' it will link to another website
            new_url = a_tag['href'].replace('/url?q=','')   # String formatting/operations to get the Tab link
            new_url = new_url.split('%')[0]                 # String formatting/operations to get the Tab link
            new_url = new_url.split('&')[0]                 # String formatting/operations to get the Tab link
            tab_urls.append(new_url)

for url in range(min(len(tab_urls),3)):
    webbrowser.open_new_tab(tab_urls[url])                  # Opening up the Tabs

Код выше работает, и моя программа работает, НО при поиске точного тега, с использованием элемента Inspect, я заметил, что источник кода HTML отличается от HTML, который был возвращен мне в soup.prettify (). Как это может быть так? Мне пришлось полностью полагаться на возвращенный мне исходный код, и я не мог использовать инструменты разработчика браузера для помощи. Я прошу прощения, если я не объяснил эту проблему четко, пожалуйста, дайте мне знать, если необходимы дальнейшие разъяснения.

Заранее спасибо!

...