python - 使用 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)
解决方案
您可以使用正则表达式模式soup.find()
来查找距离(也设置User-Agent
Http 标头)。
例如:
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