【问题标题】:Scrapy Spider Returns Only White Space CharactersScrapy Spider 仅返回空白字符
【发布时间】:2019-03-04 02:26:20
【问题描述】:

我正在尝试从以下 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 中的网络选项卡,内容来自我正在抓取的 URL:

有没有办法使用#divSideBar id 访问元素的内容?

【问题讨论】:

    标签: python-2.7 web-scraping scrapy


    【解决方案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
    

    【讨论】:

    • 我在发布问题后查看了请求标头并看到了!谢谢!
    猜你喜欢
    • 2016-11-12
    • 2013-04-09
    • 2017-12-12
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    相关资源
    最近更新 更多