BeautifulSoup и запрашивает модуль NoneType Ошибка - PullRequest
0 голосов
/ 05 ноября 2018

Пару дней я экспериментировал с запросами и модулем bs4. Я хотел сделать простую программу, похожую на «Мне повезет» из Google.

Вот мой код:

import requests, bs4, webbrowser

source=requests.get('https://www.google.com/search?q=facebook').text

exsoup=bs4.BeautifulSoup(source, 'lxml')
# <cite class="iUh30">https://www.facebook.com/</cite>
match=exsoup.find('cite', class_='iUh30')

print(match.text)

Но когда я запускаю это, я получаю следующую ошибку:

    print(match.text)
AttributeError: 'NoneType' object has no attribute 'text'

Как я могу сделать эту работу?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Похоже, проблема заключается в том, что вы посещаете сайт с помощью браузера и получаете другие результаты, чем при посещении с использованием библиотеки запросов. Вы можете попробовать указать заголовок (я взял этот пример из следующего: https://stackoverflow.com/a/27652558/9742036)

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

source = requests.get('https://www.google.com/search?q=facebook', headers=headers).text

и исходный код должен выглядеть как посещение вашего браузера.

В противном случае ваш код работает нормально. Вы просто не получаете результатов в исходном попадании, поэтому следует написать код для обработки этого случая (например, с помощью предложения итератора в другом ответе).

0 голосов
/ 05 ноября 2018

попробуйте повторить что-то вроде этого, исключая атрибут class_:

match=exsoup.find_all('cite')

for i in match:
    if 'http' in i.text:
        print(i.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...