Объект 'NoneType' не имеет атрибута 'text' в BeautifulSoup - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь очистить результаты поиска Google при поиске " Что такое 2 + 2 ", но следующий код возвращает 'NoneType' object has no attribute 'text'.Пожалуйста, помогите мне в достижении требуемой цели.

text="What is 2+2"
search=text.replace(" ","+")
link="https://www.google.com/search?q="+search
headers={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}
source=requests.get(link,headers=headers).text
soup=BeautifulSoup(source,"html.parser")
answer=soup.find('span',id="cwos")

self.respond(answer.text)

Единственная проблема с id в soup.find, однако я выбрал этот идентификатор очень близко.Я не должен ошибаться.Я также пытался answer=soup.find('span',class_="cwcot gsrt"), но ни один не работал.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

В следующий раз используйте строку запроса точно так же, как она.

import requests
from bs4 import BeautifulSoup
search="2%2B2"
link="https://www.google.com/search?q="+search
headers={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}
source=requests.get(link,headers=headers).text
soup=BeautifulSoup(source,"html.parser")
answer=soup.find('span',id="cwos")
print(answer.text)

Вывод:

 4  

Посетите эти URL - они не возвращают тот же результат

https://www.google.com/search?q=What+is+2+2

https://www.google.com/search?q=2%2B2

https://www.google.com/search?q=2+2

0 голосов
/ 30 декабря 2018

При парсинге веб-сайтов важно то, что исходный код в вашем браузере может сильно отличаться от того, что видит requests.Разница заключается в javascript, который может значительно изменить DOM в браузере с поддержкой javascript.

Я бы предложил 3 варианта:

  1. использовать requests, чтобы получить страницу, а затем внимательно изучить ее - существует ли этот тег, когда страница извлекается не-js enabled agent?
  2. использовать https://www.seleniumhq.org/ в качестве агента - по сути, это полнофункциональный браузер, которым вы можете управлять программно, в том числе с python.
  3. используйте API поиска Google вместо попыток очистить html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...