【发布时间】:2020-06-19 20:04:51
【问题描述】:
我在 python 中使用来自 bs4 的 BeautifulSoup 解析网页。当我检查谷歌搜索页面的元素时,这是具有第一个结果的部门:
因为它有class = 'r',所以我写了这段代码:
import requests
site = requests.get('https://www.google.com/search?client=firefox-b-d&ei=CLtgXt_qO7LH4-EP6LSzuAw&q=%22narendra+modi%22+%\22scams%22+%\22frauds%22+%\22corruption%22+%22modi%22+-lalit+-nirav&oq=%22narendra+modi%22+%\22scams%22+%\22frauds%22+%\22corruption%22+%22modi%22+-lalit+-nirav&gs_l=psy-ab.3...5077.11669..12032...5.0..0.202.2445.1j12j1......0....1..gws-wiz.T_WHav1OCvk&ved=0ahUKEwjfjrfv94LoAhWy4zgGHWjaDMcQ4dUDCAo&uact=5')
from bs4 import BeautifulSoup
page = BeautifulSoup(site.content, 'html.parser')
results = page.find_all('div', class_="r")
print(results)
但是命令提示符只返回了[]
可能出了什么问题以及如何纠正?
编辑 1: 我通过添加标题字典相应地编辑了我的代码,但结果与 [] 相同。
这是新代码:
import requests
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'
}
site = requests.get('https://www.google.com/search?client=firefox-b-d&ei=CLtgXt_qO7LH4-EP6LSzuAw&q=%22narendra+modi%22+%22cams%22+%22frauds%22+%22corruption%22+%22modi%22+-lalit+-nirav&oq=%22narendra+modi%22+%22scams%22+%22frauds%22+%22corruption%22+%22modi%22+-lalit+-nirav&gs_l=psy-ab.3...5077.11669..12032...5.0..0.202.2445.1j12j1......0....1..gws-wiz.T_WHav1OCvk&ved=0ahUKEwjfjrfv94LoAhWy4zgGHWjaDMcQ4dUDCAo&uact=5', headers = headers)
from bs4 import BeautifulSoup
page = BeautifulSoup(site.content, 'html.parser')
results = page.find_all('div', class_="r")
print(results)
注意:当我告诉它打印整个页面时,没有问题,或者当我使用 list(page.children) 时,它工作正常。
【问题讨论】:
-
您需要将
User-Agent标头作为可选参数传递给requests.get,其中标头是http 请求标头的字典> -
所以我应该将第二行更改为:site = requests.get('[page link]', headers = headers) ?
-
是的,
headers是一个标题字典 -
我真的不明白你所说的字典是什么意思?一个解释链接,也许?
-
喜欢
{'User-Agent': '[Stuff]'}。另外,您可以在 mozilla 网页上获取 Firefox/Chrome 用户代理
标签: python parsing beautifulsoup google-search