提问者:小点点

我从Python中的requests模块获得的html代码与我从浏览器获得的相同网页的源代码不同


当在Python中使用requests.get()方法时,我得到的响应对象生成的html代码与我从浏览器(Chrome)得到的源代码不同。这使得我很难使用BeautifulSoup模块解析代码。有没有解决这个问题的方法?。我犯错了吗?。 下面给出的是我的python脚本。我从chrome得到的网页的源代码在'r'类中有一个'a'id,这个类有一个href链接。所以我以为我会得到一个链接。但是它一直返回一个空列表。

import requests,bs4,webbrowser
res=requests.get('https://www.google.com/search?q=wind+river')
soup=bs4.BeautifulSoup(res.text, 'lxml')
sel=soup.select('.r a')
sel[0].get('href')

共1个答案

匿名用户

Google从JavaScript加载,所以请求不能加载结果。

尝试:

from selenium import webdriver
import bs4

import time
url = 'https://www.google.com/search?q=wind+river'
driver = webdriver.Firefox(executable_path='c:/program/geckodriver.exe')
driver.get(url)
time.sleep(3)
driver.page_source
soup= bs4.BeautifulSoup(driver.page_source, 'lxml')
driver.close()
sel=soup.select('.r a')
print(sel[0].get('href'))

打印:

https://www.imdb.com/title/tt5362988/

注意selenium:您需要selenium和geckodriver,在此代码中,geckodriver设置为从C:/program/geckodriver.exe导入