作者:乌龟考拉互受 | 来源:互联网 | 2024-11-10 15:38
如果想用scrapy对一各信息网站进行抓取,比如说一各房地产网站,他的结构是这样的:首先进入它的小区列表--community list,然后抓取小区详细信息的页面url--community det
如果想用scrapy对一各信息网站进行抓取,比如说一各房地产网站,他的结构是这样的:
首先进入它的小区列表--community list,然后抓取小区详细信息的页面url--community detail,
这时我进入小区的详细页面,它除了能够抓取一些小区基本的信息外,还可以得到这个小区正在出售的二手房列表和正在出租的租房列表(如果有的化),那我又可以跟着url抓取二手房信息和租房信息,我的问题是,我想在我的数据存储中构造出如下的数据结构:
1 2 3 4 5 6 7 8 9 10 11 12 13
| {
community:{
name:...,
adress:...,
sale_hourses:{
hourse1:{
},
houese2:{
}
}
}
} |
为此,我构造了这样的item:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class CommunityItem(scrapy.Item):
name = scrapy.Field()
.
.
.
class HouseItem(scrapy.Item):
name = scrapy.Field()
community = scrapy.Field(serializer=CommunityItem)
.
.
. |
我的问题是,我应该在什么时候yield item?是在parse_community的时候,还是将community作为request的meta,传导到parse_houses的时候一起yield item,再或是两个地方都可以?