scrapy分页抓取网页(-2.png页面抓取一条数据较为简单(图)信息 )

优采云 发布时间: 2022-04-20 02:27

  scrapy分页抓取网页(-2.png页面抓取一条数据较为简单(图)信息

)

  Scrapy 在页面上抓取一条数据相对简单。如果您在一个页面上抓取多条数据,则有一个技巧可以确定循环点的位置。

  以简书首页为例。比如抢热门文章,一条信息包括:作者、文章标题、浏览量、评论数、点赞数、打赏数。一页上有多条数据。

  

  -2.png

  其实就是把页面上的数据提取出来封装成一个object item,但是最后没有放到采集里面。

  物品定义

  class JsuserItem(Item):

author = Field()

url = Field()

title = Field()

reads = Field()

comments = Field()

likes = Field()

rewards = Field()

  提取数据的循环点应以收录一条信息和多条数据的标签开头,分析页面代码为div>li

  

  -0.png

  第一次提取的是一整块内容:(即多个数据块的内容)

   infos = selector.xpath('//li/div')

  第二次提取该节点下整个区块中的数据字段:

   author = info.xpath('p/a/text()').extract()

title = info.xpath('h4/a/text()').extract()

  

  -1.png

  完整代码:

   def parse(self, response):

selector = Selector(response)

infos = selector.xpath('//li/div')

for info in infos:

item = JsuserItem()

author = info.xpath('p/a/text()').extract()

title = info.xpath('h4/a/text()').extract()

url = info.xpath('h4/a/@href').extract()

reads = info.xpath('div/a[1]/text()').extract()

comments = info.xpath('div/a[2]/text()').extract()

likes = info.xpath('div/span[1]/text()').extract()

#注意有些文章是没有打赏的

rewards = info.xpath('div/span[2]/text()')

if len(rewards)==1 :

rds = info.xpath('div/span[2]/text()').extract()

rds = int(filter(str.isdigit,str(rds[0])))

else:

rds = 0

item['author']=author

item['title']=title

item['url']='http://www.jianshu.com'+url[0]

item['reads']=int(filter(str.isdigit,str(reads[0])))

item['comments']=int(filter(str.isdigit,str(comments[0])))

item['likes']=int(filter(str.isdigit,str(likes[0])))

item['rewards']=rds

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线