使用iframe爬网网站

时间:2019-06-05 18:01:37

标签: python web-scraping python-requests web-crawler

我正在尝试从this网站抓取数据。对于不同的组件,它使用多个iframes

当我尝试在浏览器中打开iframe url之一时,它在该特定会话中打开,但在另一个icognito /私人会话中却没有打开。当我尝试通过requestswget执行此操作时,也会发生同样的情况。

我尝试将请求与会话一起使用,但这也不起作用。这是我的代码段

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库可以实现这一目标?

1 个答案:

答案 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)

(请注意,几乎总是建议在发送请求时使用标头)

我希望这会有所帮助!