Scrapy Spider仅返回空白字符

时间:2019-03-04 02:26:21

标签: python-2.7 web-scraping scrapy

我正在尝试从以下URL抓取数据:

https://www.cheyennecity.org/Jobs.aspx?UniqueId=86&From=Professional-86&CommunityJobs=False&JobID=Senior-Planning-Technician-MPO-933

我一直在使用scrapy shell命令,因此我可以调试从爬网该站点获得的响应。

当我在终端中使用response.css('#divSideBar div h3').get(default='')时,我得到一个空响应。我最终使用下面的选择器进行了升级……response.css('#divSideBar').get(default=''),我得到了一堆空白字符\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t

我可以使用Chrome中的开发者工具选择合适的元素。我也检查了Chrome中的“网络”标签,其内容来自我抓取的网址:

enter image description here

是否有一种方法可以访问具有#divSideBar id的元素的内容?

1 个答案:

答案 0 :(得分:1)

实际上,所有数据均来自动态post请求。

您需要执行的操作是,根据您在检查网络标头标签中看到的请求,向另一个FormRequest发送一些必要的parameter

def parse(self, response):
   target_headers = {
        'Accept'         : '*/*',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'en-US,en;q=0.8,zh-TW;q=0.6,zh;q=0.4',
        'Connection'     : 'keep-alive',
        'Content-Type'   : 'application/x-www-form-urlencoded; charset=UTF-8',
        'User-Agent'     : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
                          AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
        'Referer'        : request.url,
    }

   yield FormRequest(request.url, formdata={...}, method='POST', 
                     headers=target_headers, meta=response.meta, callback=self.parse_detail)

def parse_detail(self, response):
    # crawl your data here