当在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')
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
导入