Для печати результатов поиска Google, Beautiful Soup не дает ничего, хотя значение присутствует - PullRequest
1 голос
/ 09 октября 2019

Я хочу написать код Python, который будет принимать запрос в качестве ввода от пользователя и печатать нас в поиске Google этого запроса для первых 20 страниц.

Мой код следующий:

print("Google Search")
from googlesearch import search                                  
import requests
import sys
from bs4 import BeautifulSoup as BS
import urllib.request 

word= input("Enter the word to be searched: ")

page='https://www.google.com/search?q='+word

for url in search(word):
    response = requests.get(page)
    soup=BS(response.text,'html.parser')
    a= soup.find('td',{'class':"cur"}).text.strip()
    if a==21:
       sys.exit()
    print(url)

Полный текст ошибки:

soup.find('td',{'class':"cur"}).text.strip()

AttributeError: 'NoneType' object has no attribute 'text'

1 Ответ

0 голосов
/ 17 октября 2019

Я попробовал то же самое, используя селен, и он работает.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

print("Google Search")
word= input("Enter the word to be searched: ")


driver_path = 'C:\Windows\chromedriver.exe'
driver = webdriver.Chrome(executable_path=driver_path)
driver.get("http://www.google.com")
input_element = driver.find_element_by_name("q")
input_element.send_keys(word)
input_element.submit()


while(1):
    elems = driver.find_elements_by_class_name("TbwUpd")
    for elem in elems:
        b=elem.text.strip()
        print(b)

    num = driver.find_element_by_class_name('cur')
    a=num.text.strip()
    if a=="20":
        sys.exit()
    else:
        link = driver.find_element_by_link_text("Next").click()
...