一个有意思的爬虫案例(爬取文章链接文章的链接、标题、评论数和点赞数量)

参考博客:https://www.jianshu.com/p/ff37a8524e72

爬之前先分析一下
1、爬什么:文章链接文章的链接、标题、评论数和点赞数量
2、怎么爬:requests请求网页、xpath解析网页
接下来正式开始爬取:
第一步:分析网页,写出图片的 xpath路径
第二步:用 requests库获取网页
第三步:使用 lxml库解析网页
第四步:把爬取到的信息保存下来

爬取的网页如图:
在这里插入图片描述

# -*- coding: utf-8 -*
import requests
from lxml import etree

# 请求头和目标网址
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'
}
url = 'https://www.jianshu.com/u/472a595d244c'

# xpath : 获取所有 li标签
xpath_items = '//ul[@class="note-list"]/li'
# 对每个 li标签再提取
xpath_link = './div/a/@href'
xpath_title = './div/a/text()'
xpath_comment_num = './/div[@class="meta"]/a[2]/text()'
xpath_heart_num = './/div[@class="meta"]/span/text()'


# 获取和解析网页
r = requests.get(url, headers=headers)
r.encoding = r.apparent_encoding
dom = etree.HTML(r.text)

# 获取所有的文章标签
items = dom.xpath(xpath_items)

# 分别对每一个文章标签进行操作 将每篇文章的链接 标题 评论数 点赞数放到一个字典里
data = []
for article in items:
    t = {}
    t['link'] = article.xpath(xpath_link)[0]
    t['title'] = article.xpath(xpath_title)[0]
    # comment_num对应的标签里有两个文本标签 用 join方法将两个文本拼接起来
    # strip()方法去除换行和空格
    t['comment_num'] = ''.join(article.xpath(xpath_comment_num)).strip()
    t['heart_num'] = article.xpath(xpath_heart_num)[0].strip()
    data.append(t)

# 打印结果
for t in data:
    print(t)

执行结果如下图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值