Python 使用Scrapy的FormRequest.from_响应方法自动抓取下拉菜单数据

Python 使用Scrapy的FormRequest.from_响应方法自动抓取下拉菜单数据,python,html,scrapy,screen-scraping,Python,Html,Scrapy,Screen Scraping,在过去的两天里,我一直在努力解决这个问题。我需要从网站上搜集所有干部或类别的数据。不幸的是,该网站允许通过下拉菜单访问这些数据,而下拉菜单没有“所有类别”选项。为了避免这种情况,我使用了Scrapy的FormRequest.from_响应方法,但是爬行器返回的是一个没有数据的空白文件。感谢您的帮助。代码如下: import scrapy class IASWinnerSpider(scrapy.Spider): name = 'iaswinner_list' allowed_

在过去的两天里,我一直在努力解决这个问题。我需要从网站上搜集所有干部或类别的数据。不幸的是,该网站允许通过下拉菜单访问这些数据,而下拉菜单没有“所有类别”选项。为了避免这种情况,我使用了Scrapy的FormRequest.from_响应方法,但是爬行器返回的是一个没有数据的空白文件。感谢您的帮助。代码如下:

import scrapy

class IASWinnerSpider(scrapy.Spider):

    name = 'iaswinner_list'
    allowed_domains = ['http://civillist.ias.nic.in']

    def start_requests(self):
        urls = [ 'http://civillist.ias.nic.in/UpdateCL/DraftCL.asp' ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        return scrapy.FormRequest.from_response(response, method='POST',
                    formdata={'cboCadre': 'UT'}, dont_click=True, callback=self.after_post)

    def after_post(self, response):

        table      = response.xpath('/html/body/div/table//tr')

        for t in table:

            yield {
                'serial': t.xpath('td[1]/text()').extract(),
                'name': t.xpath('td[2]/text()').extract(),
                'qual': t.xpath('td[3]/text()').extract(),
                'dob': t.xpath('td[4]/text()').extract(),
                'post': t.xpath('td[5]/text()').extract(),
                'rem': t.xpath('td[6]/text()').extract(),
            }

当我运行代码时,我在日志中看到:

2017-08-19 15:52:20 [scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request to 'civillist.ias.nic.in': <POST http://civillist.ias.nic.in/UpdateCL/DraftCL.asp>

它是有效的。

给出的代码尚未完成cf。可能会建议添加一个显示问题的“主要”部分。如果Linhart的答案符合您的需要,请不要忘记标记为“已接受”。是的,完成了。谢谢
allowed_domains = ['civillist.ias.nic.in']