繁体   English   中英

使用 Scrapy 从多个网页中抓取数据

[英]Scrape data from multiple webpages using Scrapy

我正在尝试使用 scrapy 从多个 web 页面中提取电话标题(以及最终的其他数据)。 我正在尝试使用已定义的功能来做到这一点。 “解析” function 应该拉出所有页面链接,如果我让它将结果生成给 CSV,它确实可以正确执行。 但是,当我尝试设置第二个“parse_pages”时,似乎代码甚至都不会尝试处理,而且我无法获得 CSV output 每个页面的标题

注意:我认识到以下功能的缩进是错误的,

import scrapy
from scrapy.http import Request

url = 'https://www.gsmarena.com/'

class PhonelinksSpider(scrapy.Spider):
    name = 'phonelinks'
    allowed_domains = ['www.gsmarena.com/results.php3?']
    start_urls = ['https://www.gsmarena.com/results.php3?']

    def parse(self, response):
        links = response.xpath('//div[@class="makers"]/ul/li/a/@href').extract()
        for link in links:
            location = url+link
            yield response.follow(url = location,callback = self.parse_pages)



    def parse_pages(self, response):
       phones = response.xpath('//h1[contains(@class,"specs-phone-name-title")]/text()').extract_first().strip()
       for title in phones:
           phone_list = {'phone':title}
           yield phone_list

这里

phones = response.xpath('//h1[contains(@class,"specs-phone-name-title")]/text()').extract_first().strip()

extract_first()返回一个stringNone这就是为什么你可以在下一行迭代它。

def parse_pages(self, response):
   title = response.xpath('//h1[contains(@class,"specs-phone-name-title")]/text()').extract_first().strip()
   yield {'phone':title}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM