如何将多个页面的抓取响应写入单个文件/数据帧

时间:2018-03-17 19:00:03

标签: python web-scraping scrapy scrapy-spider

此问题是How to get contents of HTML Script tag

的扩展

我正在使用custom_parse方法为解析方法中报废的URl集合中的每个URL抓取地理位置。

def parse(self, response)
    ...
    ... 
    for i in range(len(url)):
        yield Request(url[i], callback=self.custom_parse)
        time.sleep(3)

def custom_parse(self, response):
    items = MyItem()
    tree = Selector(response)

    script = tree.xpath('//script/text()').extract()[3]
    info = json.loads(script)
    items['address'] = info['address']['streetAddress']
    items['city'] = info['address']['addressLocality']
    items['state'] = info['address']['addressRegion']
    items['latitude'] = info['geo']['latitude']
    items['longitude'] = info['geo']['longitude']
    items['phone_number'] = info['telephone']
    df = pd.DataFrame([item],columns=item.keys())
    yield items

custom_parse将为每个URL执行并生成项目或返回df(如果我返回df而不是让步项目)。

但是如何将其合并为一个数据框(其中每一行对应于相应URL的地理信息)。

同样,如果数据帧不是我的选择,我如何将从多个URL产生的响应写入单个文件。

0 个答案:

没有答案