我正在尝试从this站点抓取数据。它对不同的组件使用多个iframes
。
当我试图在浏览器中打开某个iframe url时,它会在那个特定的会话中打开,但在另一个icognito/private会话中却无法打开,当我尝试通过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)抓取这个网址?如果有,我们将不胜感激。如果没有,在Python中有没有其他轻量级的Javascript库可以实现这一点?
发布于 2019-06-06 02:48:24
通过将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)
(请注意,几乎总是建议在发送请求时使用报头)。
我希望这能帮到你!
https://stackoverflow.com/questions/56465777
复制相似问题