爬虫练习:python+requests爬虫澎湃新闻某条新闻下的评论

我的博客原文地址 :http://www.huihuidehui.top/e994b0bc/

前言

我的博客原文地址 :
如题例如抓取这样一个新闻下的所有评论:https://www.thepaper.cn/newsDetail_forward_4489661
首先,列出需要抓取的数据:

  1. 新闻标题
  2. 新闻发布日期
  3. 评论者的昵称
  4. 评论的内容

1. 分析网页请求找到需要的数据

看下图,在网页的第一个请求里面已经包括了1,2两条的数据。
在这里插入图片描述

接着在浏览器中向下滑动新闻网页加载评论,同时关注控制台,注意搜索框里的load,如下图浏览器会不断的发送请求给服务器,在这个请求的相应里面就包含了需要的3,4条(评论,评论者的用户名)数据。看一下这个请求的url有一堆的请求参数尝试精简下最后得到这样的urlhttps://www.thepaper.cn/load_moreFloorComment.jsp?contid=4489661startId=24750775。在这个url里面只有两个参数,第一个是新闻的id,第二是评论页的id。有了这个url就可以根据不同的startid构造出评论的url最终的抓到所有的评论信息。
在这里插入图片描述

2. 怎么找到不同的startid?

同样是上面那个图,在新标签打开对应的请求,看一下html源码,在第一条评论div里面有一个startid=‘24745735’。
在这里插入图片描述
记住这个值,再回去看一下第二条请求评论的url,发现最后的startid值就是第一条请求评论的url里面的startid值。就是这个样子:
在这里插入图片描述
至此,所有的数据理论上来说都可以找到了。剩下的就是写代码了。

3.码码码码码码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ************************************************************************
# *
# * @file:penpai.py
# * @author:kanhui
# * date:2019-09-22 11:40:30
# * @version 3.7.3
# *
# ************************************************************************

import requests
import re
from lxml import etree
import json


class PengPaiSpider():
    '''
    给定一个澎湃新闻的url爬取其下的评论信息
    例如:https://www.thepaper.cn/newsDetail_forward_1292455
    '''

    def __init__(self):
        print('input url:')

        # 新闻url地址
        self.url = input()

        # 用来判断是否到达最后一页,在请求评论页面时的第一条评论里有一个startId参数如果为0则表示没有下一页了
        self.next_id = ''

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值