首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scrapy从多个网页中抓取数据

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

Stack Overflow用户
提问于 2019-11-12 04:27:47
回答 1查看 65关注 0票数 0

我正在尝试使用scrapy从多个网页中提取电话标题(以及最终的其他数据)。我正在尝试使用已定义的函数来做到这一点。"parse“函数应该提取所有页面链接,如果我让它将结果输出到CSV,它确实可以正确地执行此操作。但是,当我尝试设置第二个"parse_pages“时,代码似乎甚至不会尝试处理,并且我无法获得仅包含每个页面标题的CSV输出

注意:我认识到下面的函数缩进是错误的,

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2019-11-12 05:30:55

这里

代码语言:javascript
复制
phones = response.xpath('//h1[contains(@class,"specs-phone-name-title")]/text()').extract_first().strip()

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

代码语言:javascript
复制
def parse_pages(self, response):
   title = response.xpath('//h1[contains(@class,"specs-phone-name-title")]/text()').extract_first().strip()
   yield {'phone':title}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58808251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档