поиск в Google с использованием bs4, python - PullRequest
0 голосов
/ 25 июня 2018

Я хотел узнать адрес " Spotlight 29 адрес казино " через поиск Google в скрипте python.Почему мой код не работает?

from bs4 import BeautifulSoup
# from googlesearch import search
import urllib.request
import datetime
article='spotlight 29 casino address'
url1 ='https://www.google.co.in/#q='+article
content1 = urllib.request.urlopen(url1)
soup1 = BeautifulSoup(content1,'lxml')
#print(soup1.prettify())
div1 = soup1.find('div', {'class':'Z0LcW'}) #get the div where it's located
# print (datetime.datetime.now(), 'street address:  ' , div1.text)
print (div1)

Pastebin Link

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Google использует рендеринг javascript для этой цели, поэтому вы не получаете этот div с urllib.request.urlopen.

В качестве решения вы можете использовать библиотеку selenium - python для эмуляции браузера.Установите его, используя консольную команду 'pip install selenium', тогда код будет работать так:

from bs4 import BeautifulSoup
from selenium import webdriver


article = 'spotlight 29 casino address'
url = 'https://www.google.co.in/#q=' + article
driver = webdriver.Firefox()
driver.get(url)
html = BeautifulSoup(driver.page_source, "lxml")

div = html.find('div', {'class': 'Z0LcW'})
print(div.text)
0 голосов
/ 25 июня 2018

Если вы хотите получить результат поиска Google. Селен с Python - более простой способ.

ниже приведен простой код.

from selenium import webdriver
import urllib.parse
from bs4 import BeautifulSoup

chromedriver = '/xxx/chromedriver' #xxx is chromedriver in your installed path
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chromedriver, chrome_options=chrome_options)

article='spotlight 29 casino address'
driver.get("https://www.google.co.in/#q="+urllib.parse.quote(article))
# driver.page_source  <-- html source, you can parser it later.
soup = BeautifulSoup(driver.page_source, 'lxml')
div = soup.find('div',{'class':'Z0LcW'})
print(div.text)
driver.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...