首页 > 解决方案 > 使用 Python 抓取谷歌搜索结果

问题描述

我想抓取给定的谷歌结果图像中的所有距离。我能够刮到第一个距离,但我无法刮到第二个和第三个距离。我正在使用下面的代码来刮第一个距离。

qstr = quote("distance between zip codes 75000 paris and 75016 paris")
url_getallfolders='https://www.google.com/search?q='+qstr
response=requests.get(url_getallfolders)
url_getallfolders
soup=BeautifulSoup(response.content,'lxml')
#print(response.text)
tagc = soup.select("div.kCrYT span")
codes = [i.text.strip() for i in tagc]
print(codes)

谷歌结果

标签: pythonweb-scrapingbeautifulsoup

解决方案


您可以使用正则表达式模式soup.find()来查找距离(也设置User-AgentHttp 标头)。

例如:

import re
import requests
from bs4 import BeautifulSoup

url = 'https://www.google.com/search?hl=en&q=distance%20between%20zip%20codes%2075000%20paris%20and%2075016%20paris'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}
soup = BeautifulSoup(requests.get(url, headers=headers).content, 'html.parser')

print(soup.find(text=re.compile(r'\d+\.\d+\s*km')))

印刷:

15.8 km

推荐阅读