我需要一些帮助才能从 asp.net 站点下载文件。通常从浏览器中,单击链接并开始下载文件,但对于scrapy来说这是不可能的,所以我想做的是以下内容:
def retrieve(self, response):
print('Response URL: {}'.format(response.url))
pattern = re.compile('(dg[^\']*)')
for file in response.xpath('//table[@id="dgFile"]/tbody/tr/td[2]/a'):
file_url = file.xpath('@href').extract_first()
target = re.search(pattern, file_url).group(1)
viewstate = response.xpath('//*[@id="__VIEWSTATE"]/@value').extract_first()
viewstategenerator = response.xpath('//*[@id="__VIEWSTATEGENERATOR"]').extract_first()
eventvalidation = response.xpath('//*[@id="__EVENTVALIDATION"]').extract_first()
data = {
'_EVENTTARGET': target,
'_VIEWSTATE': viewstate,
'_VIEWSTATEGEERATOR': viewstategenerator,
'_EVENTVALIDATION': eventvalidation
}
yield FormRequest.from_response(
response,
formdata=data,
callback=self.end(response)
)
我正在尝试将信息提交到页面,以便接收 zip 文件作为响应,但是这并没有像我希望的那样工作。相反,我只是得到与响应相同的页面。
在这种情况下甚至可以使用scrapy来下载这个文件吗?有人有任何指示吗?
我也尝试过使用 Selenium+PhantomJS,但我在尝试将会话从 scrapy 转移到 selenium 时遇到了死胡同。我愿意为这个功能使用 selenium,但我需要在这个项目中使用 scrapy。