我正在尝试从this网站抓取数据。对于不同的组件,它使用多个iframes
。
当我尝试在浏览器中打开iframe url之一时,它在该特定会话中打开,但在另一个icognito /私人会话中却没有打开。当我尝试通过requests
或wget
执行此操作时,也会发生同样的情况。
我尝试将请求与会话一起使用,但这也不起作用。这是我的代码段
import requests
s = requests.Session()
s.get('https://www.epc.shell.com/')
r = s.get('https://www.epc.shell.com/welcome.asp')
r.text
最后一行仅返回JavaScript文本,并显示URL无效的错误。
我知道Selenium可以解决此问题,但我认为它是最后的选择。
是否可以使用requests
(或不使用Javascript )来抓取此URL?如果是,将不胜感激。如果没有,那么Python中是否还有其他轻量级Javascript库可以实现这一目标?
答案 0 :(得分:2)
通过向您的请求中添加custom headers可以轻松解决您的问题,总而言之,您的代码应如下所示:
import requests
s = requests.Session()
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0", "Accept-Language": "en-US,en;q=0.5"}
s.get('https://www.epc.shell.com/', headers = headers)
r = s.get('https://www.epc.shell.com/welcome.asp', headers = headers)
print(r.text)
(请注意,几乎总是建议在发送请求时使用标头)。
我希望这会有所帮助!