为了账号安全,请及时绑定邮箱和手机立即绑定

scrapy 抓取网站从网站产品分类获取了所有分类信息,怎么通过分类的id向二级页面获取分类下的产品详细呢

scrapy 抓取网站从网站产品分类获取了所有分类信息,怎么通过分类的id向二级页面获取分类下的产品详细呢

慕仙森 2019-04-19 16:29:37
比如执行:scrapycrawlxxxx启动xxxxspider获取到了产品分类列表[{"classname":"奥迪","classpic":"htttp://xxxxx/xx.jpg","classid":1001,"producturl":"http://xxxxx/product/1001"}]如何通过producturl或者classid自动执行获取产品详细的spider抓取产品详内容。[{"productid":9000,"productname":"奥迪Q5","productpic":"http://xxxx/aodi.pic","classid":1001}]
查看完整描述

2 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

一般我都是抓取list用一个爬虫,抓取详情用另一个爬虫。抓取详情的爬虫从已经保存到库中的某个字段获取url,然后抓取详情页的内容。然后两个数据再通过某个字段进行关联。
                            
查看完整回答
反对 回复 2019-04-19
?
函数式编程

TA贡献1807条经验 获得超9个赞

我这么写的不知道可否?
item.py
classPclassItem(scrapy.Item):
'''
产品分类item
'''
cid=scrapy.Field()
cname=scrapy.Field()
classProductItem(scrapy.Item):
'''
产品item
'''
pcid=scrapy.Field()
pname=scrapy.Field()
pid=scrapy.Field()
DemoSplider.py
classDempSpider(scrapy.spiders.Spider):
defparse(self,response):
item=PclassItem()
cid=response.xpath("//xxxx")
item["cid"]=cid
pass
yielditem
producturl=response.xpath("//xxxx")
yieldRequest(producturl,meta={"cid":cid},callback=parse_product)
defparse_product(scrapy.spiders.Spider):
item=ProductItem()
item['pid']=response.meta['cid']
pass
yielditem
pipelines.py
classDemoPipeline(object):
defprocess_item(self,item,spider):
ifitem.__class__==PclassItem:
pass
ifitem.__class__==ProductItem:
pass
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 417 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信