用xpath解析伯乐在线的文章

上一篇文章是在Pycharmz中调试程序,每次调试都比较麻烦,我们可以在scrapy shell中调试。具体步骤如下

之后我们就会看到如下图所示

这里我们只关注response。首先和上文一样,我来提取出文章标题。采用class定位的方法。


再使用extract()方法可提取出内容,并保存在数组中,使用extract()[0]来提取数组中第一个内容,这样子标题就提取出来了,以后我学习如何将其保存到数据库中。

一篇文章不仅包括标题,还有发布时间,类别,点赞数,收藏数,评论数,和正文。接下来,我一个个来提取这些内容。

首先是发布时间,通过WenIDE,找到发布时间

然后使用repalce()方法把点号替换成空格,再用strip()来去掉空格,提取出时间,原理是正确的,但是我的字符总是出错,替换不成功。但是在Pycharm中成功。估计是cmd的问题。

同理,我们可获得其他字段。代码如下

# -*- coding: utf-8 -*-
import scrapy
import re

class JobboleSpider(scrapy.Spider):
    name = 'jobbole'
    allowed_domains = ['blog.jobbole.com']
    start_urls = ['http://blog.jobbole.com/113549/']

    def parse(self, response):
        title = response.xpath('//div[@class = "entry-header"]/h1/text()').extract()[0]
        create_date = response.xpath("//p[@class = 'entry-meta-hide-on-mobile']/text()").extract()[0].strip().replace("·","").strip()
        praise_numbers = response.xpath("//span[contains(@class,'vote-post-up')]/h10/text()").extract()[0]
        fav_nums = response.xpath("//span[contains(@class,'bookmark-btn')]/text()").extract()[0]
        match_re = re.match(".*(\d+).*",fav_nums)
        if match_re:
            fav_nums = match_re.group(1)
        comment_nums = response.xpath("//a[@href='#article-comment']/span").extract()[0]
        match_re = re.match(".*(\d+).*", comment_nums)
        if match_re:
            comment_nums = match_re.group(1)
        content = response.xpath("//div[@class='entry']").extract()[0]
        

在此我提取出了标题,发表日期,点赞数,收藏数,评论数和正文。正文没有经过处理。

对于这篇文章的提取结果如下图




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值