通过selenium和phantomjs从动态网址下载文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过selenium和phantomjs从动态网址下载文件相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个通过动态网址下载CSV文件的网络抓取工具。
网址就像http://aaa/bbb.mcv/Download?path=xxxx.csv
我把这个网址放到我的Chrome浏览器中,但我刚开始立即下载,页面也不会改变。
我甚至无法在开发屏幕中找到任何请求。
我试图找到获取文件的方法
- 将网址放入硒中
driver.get(url)
- 尝试通过请求lib获取文件
requests.get(url)
两者都不起作用......
有什么建议?
输出两种方式:
- 我试图获得屏幕截图,似乎不会改变页面。 (就像镀铬一样)
- 我尝试打印出我得到的数据,它看起来像html文件。 然后在浏览器中打开它,它是一个登录页面。
答案
import requests
url = '...'
save_location = '...'
session = requests.session()
response = session.get(url)
with open(save_location, 'wb') as t:
for chunk in response.iter_content(1024):
t.write(chunk)
另一答案
谢谢大家的帮助! 我终于发现问题是...... 我通过selenium登录网站,并使用请求下载文件。 Selenium没有任何身份验证信息!
所以我的解决方案是首先通过selenium获取cookie。 然后将其发送到请求中!
这是我的代码
cookies = driver.get_cookies() #selenium web driver
s = requests.Session()
for cookie in cookies:
s.cookies.set(cookie['name'], cookie['value'])
response = s.get(url)
以上是关于通过selenium和phantomjs从动态网址下载文件的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
使用scrapy爬虫,爬取今日头条首页推荐新闻(scrapy+selenium+PhantomJS)
动态网页爬取样例(WebCollector+selenium+phantomjs)
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容