猿问

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

比如执行: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
}
]
慕仙森
浏览 418回答 2
2回答

慕莱坞森

一般我都是抓取list用一个爬虫,抓取详情用另一个爬虫。抓取详情的爬虫从已经保存到库中的某个字段获取url,然后抓取详情页的内容。然后两个数据再通过某个字段进行关联。

函数式编程

我这么写的不知道可否?item.pyclassPclassItem(scrapy.Item):'''产品分类item'''cid=scrapy.Field()cname=scrapy.Field()classProductItem(scrapy.Item):'''产品item'''pcid=scrapy.Field()pname=scrapy.Field()pid=scrapy.Field()DemoSplider.pyclassDempSpider(scrapy.spiders.Spider):defparse(self,response):item=PclassItem()cid=response.xpath("//xxxx")item["cid"]=cidpassyielditemproducturl=response.xpath("//xxxx")yieldRequest(producturl,meta={"cid":cid},callback=parse_product)defparse_product(scrapy.spiders.Spider):item=ProductItem()item['pid']=response.meta['cid']passyielditempipelines.pyclassDemoPipeline(object):defprocess_item(self,item,spider):ifitem.__class__==PclassItem:passifitem.__class__==ProductItem:pass
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答