首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用scrapy抓取同一名称的多个唯一项。

使用scrapy抓取同一名称的多个唯一项。
EN

Stack Overflow用户
提问于 2014-07-15 01:27:43
回答 1查看 941关注 0票数 0

我必须抓取下面的url,它基本上包含评论。所有的评论,都有一个评论作者的名字,一个评论的标题,和一个评论本身。

我选择了“”来完成这个任务。

但是上面提到的url不是start,我将从基本的parse方法中获得它。在解析中,我将初始化一个itemLoder。我将在那里提取几个项目,并通过响应的meta传递项目。(提取的字段包含酒店名称、地址、价格等信息。)

我还声明了一些项目,即"review_member_name“、"review_quote”、"review_review“

页面中有多个评审,并且可以从response.url获得评审id。(如下面的解析方法所示)

由于有许多评论,而且所有的评论都将共享相同的项目名称,所以这些项目都会得到连接的,这是不应该发生的。有人能给我建议解决这个问题的方法吗?

下面是我的parse_review来源。

代码语言:javascript
运行
AI代码解释
复制
def parse_review(self,response):
    review_nos = re.search(".*www\.tripadvisor\.in/ExpandedUserReviews-.*context=1&reviews=(.+)&servlet=Hotel_Review&expand=1",response.url).group(1)
    review_nos = review_nos.split(',') # list of review ids

    for review_no in review_nos:
        item = response.meta['item']
        #item = ItemLoader(item=TripadvisorItem(), response=response) - this works fine but I will lose the items from parse method
        div_id = "expanded_review_"+review_no
        review = response.xpath('/html/body/div[@id="%s"]'%div_id)
        member_name = review.xpath('.//div[@class="member_info"]//div[@class="username mo"]//text()').extract()
        if member_name:
            item.add_value('review_member_name', member_name)

        review_quote = review.xpath('.//div[@class="innerBubble"]/div[@class="quote"]//text()').extract()
        if review_quote:
            item.add_value('review_quote', review_quote)

        review_entry = review.xpath('.//div[@class="innerBubble"]/div[@class="entry"]//text()').extract()
        if review_entry:
            item.add_value('review_review', review_entry)

        yield item.load_item()

下面是我的items.json ("review_review“正在被删除,解析方法中的项也被删除)

[{"review_quote": "\u201c Fabulous service \u201d", "review_member_name": "VimalPrakash"}, {"review_quote": "\u201c Fabulous service \u201d \u201c Indian hospitality at its best, and honestly the best coffee in India \u201d", "review_member_name": "VimalPrakash Jessica P"}, {"review_quote": "\u201c Fabulous service \u201d \u201c Indian hospitality at its best, and honestly the best coffee in India \u201d \u201c Nice hotel in a central location \u201d", "review_member_name": "VimalPrakash Jessica P VikInd"}]

请为这个问题建议一个好的标题。

EN

回答 1

Stack Overflow用户

发布于 2014-07-15 03:36:49

在对其执行ItemLoader之前,您必须创建一个新的add_value;现在您正在创建一个项,并在循环中一次又一次地向它添加新的值。

代码语言:javascript
运行
AI代码解释
复制
for review_no in review_nos:
    item = ItemLoader(item=projectItem(), response=response)

    ...

    yield item.load_item()

您还可以在提供的xpath中直接使用.add_xpath,并在创建ItemLoader时使用response.xpath作为项的选择器,这样您就可以避免所有的if测试,让load做它应该做的事情: load item。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24754531

复制
相关文章
使用scrapy抓取股票代码
源码地址:https://github.com/geeeeeeeek/scrapy_stock
西门吹雪1997
2023/07/12
2180
使用scrapy抓取股票代码
源码地址:https://github.com/geeeeeeeek/scrapy_stock
西门吹雪1997
2019/02/26
9460
使用scrapy抓取股票代码
如何使用Scrapy框架抓取电影数据
随着互联网的普及和电影市场的繁荣,越来越多的人开始关注电影排行榜和评分,了解电影的排行榜和评分可以帮助我们更好地了解观众的喜好和市场趋势.豆瓣电影是一个广受欢迎的电影评分和评论网站,它提供了丰富的电影信息和用户评价。因此,爬取豆瓣电影排行榜的数据对于电影从业者和电影爱好者来说都具有重要意义。
小白学大数据
2023/09/25
3540
动态内容抓取指南:使用Scrapy-Selenium和代理实现滚动抓取
在网络数据抓取的过程中,有时需要处理那些通过JavaScript动态加载的内容。本文将介绍如何使用Scrapy-Selenium库来实现在网页中多次滚动并抓取数据,以满足对动态内容的抓取需求。
jackcode
2023/08/16
1.2K1
动态内容抓取指南:使用Scrapy-Selenium和代理实现滚动抓取
jmeter ---同一个参数、返回多个重复的值、怎么取唯一值。
( account_id的值会一直变化、有时可能多个值不一样、如何取用用于第二个接口)
用户10183171
2022/11/11
2.6K0
Scrapy全站抓取-个人博客
想像一下,首先我们需要解析一个网站的首页, 解析出其所有的资源链接(ajax方式或绑定dom事件实现跳转忽略),请求该页面所有的资源链接, 再在资源链接下递归地查找子页的资源链接,最后在我们需要的资源详情页结构化数据并持久化在文件中。这里只是简单的介绍一下全站抓取的大致思路,事实上,其细节的实现,流程的控制是很复杂的。
py3study
2020/11/09
1.2K0
Scrapy源码剖析(四)Scrapy如何完成抓取任务?
上一篇文章:Scrapy源码剖析(三)Scrapy有哪些核心组件?我们已经分析了 Scrapy 核心组件的主要职责,以及它们在初始化时都完成了哪些工作。
_Kaito
2021/03/23
1.2K0
Scrapy源码剖析(四)Scrapy如何完成抓取任务?
scrapy抓取下载360图片
假设我们要做一个有关美食的网站,需要从360图片库采集一批美食图片,不仅是采集图片的链接,而是将图片下载到本地,引用第三方图片链接总是不可靠的,哪天设置了防盗链,又得重新忙活,还是要放在自己的图床才踏实
章鱼喵
2019/07/22
9600
scrapy抓取下载360图片
scrapy顺序执行多个爬虫
# -*- coding:utf-8 -*- from scrapy import cmdline from scrapy.cmdline import execute import sys,time,os #会全部执行爬虫程序 os.system('scrapy crawl ccdi') os.system('scrapy crawl ccxi') #----------------------------------------------------- #只会执行第一个 cmdline.exe
周小董
2019/03/25
1K0
用Python抓取在Github上的组织名称
我想在我的个人网站上展现我在Github上提交代码的组织名称,并且不用我手动更新提交记录的变化。Github提供了读取数据的API,但是,不能体现出我想一些开发组织提交的代码。这就是我之所以要爬取那些信息的原因。本文的代码仓库:https://github.com/DahlitzFlorian
老齐
2020/05/15
1.7K0
用Python抓取在Github上的组织名称
爬虫进阶:Scrapy抓取科技平台Zealer
  这次的目标网站也是本人一直以来有在关注的科技平台:Zealer,爬取的信息包括全部的科技资讯以及相应的评论。默认配置下运行,大概跑了半个多小时,最终抓取了5000+的资讯以及10几万的评论。
happyJared
2018/09/20
8270
爬虫进阶:Scrapy抓取科技平台Zealer
在同一个系统里使用多个版本的软件
如果你有几房姨太太的话,那么想让她们和平共处,多半是痴人说梦。对程序员而言,虽然他们不会有娶几个老婆的好运气,但是很可能会遇到在同一个系统里使用多个版本的软件的情况,一旦处理不好,同样会焦头烂额。
LA0WAN9
2021/12/14
1.2K0
Scrapy递归抓取简书用户信息
好久没有录制实战教程视频,大邓就在圣诞节后直接上干货。 之前写过一期【视频教程-用python批量抓取简书用户信息】的文章,是自己造的轮子,今天我趁着刚入门scrapy和xpath,操刀重写这个任务。 一、实战项目简介递归 我们要大批量获取简书网站上的用户数据,最直接的办法是给一个初识的用户url,从这个用户的关注的和粉丝中再抽取url,循环往复,周而复始。这其实就是递归。 数据项 获取到的url,我们需要对其进行请求,解析出想要的数据 昵称-nickname 关注数-followed 粉丝数- fol
企鹅号小编
2018/01/26
1.4K0
scrapy爬虫抓取并下载文件
scrapy 内部提供了专门用于下载文件的 FilesPipeline , 我们可以将其视为特殊的下载器,只需要将要下载的文件 url 传递过去,下载器就会自动将文件下载到本地
章鱼喵
2019/07/22
4.1K0
scrapy爬虫抓取并下载文件
爬虫进阶:Scrapy抓取慕课网
  完整的爬虫流程大致是这样的:分析页面结构 -> 确定提取信息 -> 设计相应表结构 -> 编写爬虫脚本 -> 数据保存入库;入库可以选择mongo这样的文档数据库,也可以选择mysql这样的关系型数据库。废话不多讲,这里暂且跳过页面分析,现给出如下两张数据表设计:
happyJared
2018/10/10
1.9K0
爬虫进阶:Scrapy抓取慕课网
使用Debookee抓取同一网络中中任何设备的报文
使用文档见:https://docs.debookee.com/en/latest/
zx钟
2022/12/02
1.3K0
使用Debookee抓取同一网络中中任何设备的报文
Scrapy:多个spider时指定pipeline
导读 Scrapy存在多个爬虫的时候如何指定对应的管道呢? 1、在 pipeline 里判断爬虫 settings.py ITEM_PIPELINES = { "xxxx.pipelines.MyPipeline": 300, } OneSpider.py class OneSpider(scrapy.spiders.Spider): name = "one" TwoSpider.py class TwoSpider(scrapy.spiders.Spider): name = "t
新码农
2020/04/17
2.2K0
Scrapy:多个spider时指定pipeline
Scrapy:多个item时指定pipeline
有时,为了数据的干净清爽,我们可以定义多个item,不同的item存储不同的数据,避免数据污染。但是在pipeline对item进行操作的时候就要加上判断。
新码农
2020/04/17
2.7K0
Scrapy:多个item时指定pipeline
Scrapy:多个爬虫同时运行
在spiders目录的同级目录下创建一个commands目录,并在该目录中创建一个crawlall.py,将scrapy源代码里的commands文件夹里的crawl.py源码复制过来,只修改run()方法即可。(文件夹下面必须要有__init__文件)
新码农
2020/12/29
1.5K0
scrapy如何顺序执行多个爬虫
scrapy如何单线程顺序执行多个爬虫,刚开始我天真的以为将多个excute顺序罗列就能依次执行每个爬虫了,代码如下所示: 谁料,在执行完第一个爬虫之后,整个程序就停止运行了。到底是什么原因呢?笔者在 Stack Overflow 上找到了类似的问题( https://stackoverflow.com/questions/24875280/scrapy-cmdline-execute-stops-script )。得知问题的原因在于 方法中的最后一句代码是 ,所以当程序执行完一个execute语
企鹅号小编
2018/01/29
2.2K0
scrapy如何顺序执行多个爬虫

相似问题

使用Scrapy抓取多个URL

30

使用scrapy抓取多个页面

05

使用scrapy抓取多个页面

12

如何使用scrapy抓取多个页面?

23

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

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文