1

我需要一些帮助才能从 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。

4

0 回答 0