Python результаты парсинга не отображаются - PullRequest
0 голосов
/ 05 августа 2020

Я новичок в парсинге веб-страниц, поэтому был бы признателен за советы! Я хочу распечатать результаты поиска по имени Google, но ничего не отображается. Я понял, что for l oop for result in search_div: не выполняется, так что, возможно, программа не определяет никаких результатов? Мой код выглядит следующим образом:

from googlesearch import search
import requests
from bs4 import BeautifulSoup

print('Please enter your first name')
firstName = input()
print('Please enter your surname')
secondName = input()
query = firstName + ' ' + secondName
print('Please enter language ex:[en,fr,ar,jp,cn...]: ')
lang = input()

# requests
url = 'https://www.google.com/search?hl={}&q;={}&start;=3i#=10&ie;=UTF-8'.format(lang, query)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}#headers
# url source
source = requests.get(url, headers=headers).text

# BeautifulSoup
soup = BeautifulSoup(source, 'lxml')
# find all divs that contain search result
search_div = soup.find_all(class_='rc')
for result in search_div:
    # loop result list
    #geting h3
    print('Title: %s'%result.h3.string)
    print('\n')
    #geting a.href
    print('Url: %s'%result.a.get('href'))
    print('\n')
    # description
    print('Description: %s'%result.find(class_='st').text)
    print('\n###############\n')

И я получаю «Процесс завершен с кодом выхода 0». Буду очень признателен за помощь с этим!

1 Ответ

0 голосов
/ 05 августа 2020

Документ HTML, который видит requests, и модель DOM, которую вы видите в браузере, отличаются. Это потому, что requests не выполняет Javascript, в то время как ваш браузер, очевидно, выполняет. Загрузите HTML и проверьте, присутствуют ли необходимые вам элементы. Если нет, вы можете использовать requests-html, который выполняет Javascript.

https://requests.readthedocs.io/projects/requests-html/en/latest/

...