这次的案例实现的过程跟某条的差不多,因为两个案例有很多共同之处,如果想爬取某条评论的,又找不到思路,希望可以通过这个案例给大家一点小小的启发。

一、分析网页

我们需要爬取的就是图片箭头这些新闻数据,可以很清楚的看到这些数据都是在主页里面,也就是说,这是一个纯纯的html网页,我们只需要提取出该网页里面的新闻的标题和新闻的链接就可以了,我们点击进入到新闻页面去看一下,我们需要找到该新闻的评论信息的位置,如图:

我们需要提取的就是箭头所指的这些,评论作者,作者id,评论内容,评论地这些数据,我们进入到分析页面去具体看一下,

如图所示,可以看到,我们直接定位的是xhr选项下,找到包含这些数据的数据包,发现是一个json格式的数据,找到了数据的位置,下面看一下数据的链接是如何形成的

可以看到这个数据包链接是通过这几个参数形成的,通过分析,这几个参数里面,codeid是一个变化的参数,pageno这个是翻页的参数,其他的参数都是固定的参数,我们最主要的就是要找到这个codeid参数,

通过搜索我们可以发现这个codeid的参数就在该新闻页面的里面,我们要找到这个参数,就要在包含该新闻页面的html里面提取出来这个参数,然后携带这个参数请求包含评论数据的链接,来获取我们需要的评论数据,最后保存数据就可以了,知道了大概的思路,下面我们就来看一下代码吧:

案例所需模块:

import httpx
import parsel
import re
import json
import pandas as pd

二、发送请求,获取响应数据

def parse_url(url):with httpx.Client(base_url=home_url) as s:r = s.get(url, headers=headers)return r.content.decode()

三、提取新闻标题和链接

def get_news_datas(html_str):html = parsel.Selector(html_str)for item in html.css('.Review-item>li'):yield {'news_title': item.css('.module-title>a::text').get(),'news_link': item.css('.module-title>a::attr(href)').get(),}

四、提取codeid参数数据

def get_params(html_str2):news_id = re.search('_DOC_ID="(\d+)";', html_str2).group(1)params = {"codeId": news_id,"codeType": "1","pageNo": "1","order": "1","ff": "www",}return params

五、对评论数据页面发送请求,获取响应数据并提取需要的评论数据

def parse_url2(url, params):r = httpx.get(url, headers=headers, params=params)return r.content.decode()def get_comment_datas(news_data, json_str):json_datas = json.loads(json_str)for json_data in json_datas['items']:yield {# 提取新闻标题'news_title': news_data['news_title'],# 提取评论作者名字'comment_user': json_data['user_nick'],# 提取评论作者id'comment_user_id': json_data['user_id'],# 提取评论的内容'comment_text': json_data['content'].replace('\n', "").replace('<br />', "").replace('<strong>',"").replace('</strong>', ""),# 提取评论作者的所在城市'comment_user_where': json_data['location_text'],}

六、保存评论数据

def save_datas(comment_list):df = pd.DataFrame(comment_list)df.to_csv('./comment_data.csv', index=False,encoding='utf-8-sig')print('数据保存成功')

七、实现程序的主要逻辑思路

def main():comment_list = []html_str = parse_url(home_url)news_datas = get_news_datas(html_str)for news_data in news_datas:html_str2 = parse_url(news_data['news_link'])params = get_params(html_str2)json_str = parse_url2(api_url, params)comment_datas = get_comment_datas(news_data, json_str)for comment_data in comment_datas:comment_list.append(comment_data)save_datas(comment_list)

完成效果:

python获取评论数据相关推荐

  1. Python 获取接口数据,解析JSON,写入文件

    Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而 ...

  2. python自动获取天气_用python获取天气数据,并作定时播报

    原标题:用python获取天气数据,并作定时播报 数据挖掘入门与实战 公众号: datadw 思路 1.调用和风天气的API,获取天气数据 2.用百度语音API,将天气数据合成语音 3.用树莓派每天早 ...

  3. python 获取股市数据 baostock + 画K线图 mpl_finance

    python 获取股市数据 baostock + 画K线图 mpl_finance 获取股票数据 安装baostock库 baostock库的特性 获取A股K线数据 核心代码如下 完整代码如下 画K线 ...

  4. python获取股票数据,并计算技术指标

    python获取stock数据. 计算技术指标使用talib库. 方法一:使用 pandas_datareader.data 库,该库获取的历史数据更多一些.上证股票在股票代码后面加上".S ...

  5. matlab python 股票,股票行情数据获取-Python获取股票数据?

    Python获取股票数据? 这里推荐一个包―tushare,tushare是一个免费.开源的python财经数据接口包.主要实现了从数据采集.清洗加工到数据存储过程,能够为金融分析人员提供快速.整洁的 ...

  6. Python零基础速成班-第12讲-Python获取网络数据Socket,API接口,网络爬虫Crawler(制作弹幕词云)

    Python零基础速成班-第12讲-Python获取网络数据Socket,API接口,网络爬虫Crawler(制作弹幕词云) 学习目标 获取网络数据Socket API接口 网络爬虫Crawler(制 ...

  7. 使用Python获取ADS-B数据,并显示飞机航迹动态

    使用Python获取ADS-B数据,并显示飞机航迹动态. 1.绘图环境 1)使用cartopy显示地理位置信息 import cartopy.crs as ccrs from cartopy.io.i ...

  8. 【搬运自用】 用Python获取网络数据 -Python100天从新手到大师Day57(GitHub)

    用Python获取网络数据 原作者:骆昊 https://github.com/jackfrued/Python-100-Days 更多内容欢迎查看并订阅专栏'Python从新手到大师'和'Pytho ...

  9. MapBox离线地图+python获取瓦片数据

    工作中需要使用离线地图. 使用工具:MapBox离线地图+python获取瓦片数据 前端页面: <!DOCTYPE html> <html> <head><m ...

最新文章

  1. ProEssentials实时三维图表控件
  2. c语言书籍elf文件,扒一扒ELF文件
  3. linux安装php7.2.7
  4. maven-resources-plugin插件使用
  5. pause容器作用_容器编排之战(四)连载
  6. 面试软件测试所需要掌握的7个技能
  7. 简述 Linux 文件系统的目录结构
  8. 【软考软件评测师】2018综合知识历年真题
  9. 【Visual Assist X】VAssistX的安装和使用
  10. 蓝桥杯C/C++A组省赛历年真题题解(2013~2021)
  11. 可行性研究报告【列文】2022-5.6
  12. python画菱形的代码_python绘制菱形
  13. 使用HC05蓝牙模块实现数据无线传输,看完包会
  14. 【分享】asp.net WebChart 折线图、饼形图、柱状图
  15. 纽约大学计算机和信息科学专业,纽约大学与罗切斯特大学计算机科学专业比较...
  16. 教会微信:突破文件发送100M限制
  17. 阿里云如何绑定域名(阿里云域名如何绑定ip)
  18. 最全阿里面试题:已拿offer,阿里P8岗位完整阿里技术面试题目,这些面试题你能答出多少
  19. 来自阿里的,7天学会(废)nodejs教程
  20. spring5源码阅读(五)Post Processors类型及作用详解

热门文章

  1. 《“雕刻”--“雕塑”系统操作设计》
  2. 牛顿差商多项式的理解与C++实现
  3. word邮件合并发送记录_如何将Word文档作为电子邮件正文发送
  4. 二次规划问题的KKT 条件求解方法
  5. 使用@PersistenceContext获取EntityManager报NullPointerException异常
  6. 希望各位博友解答一下
  7. ubuntu top命令详解
  8. Gradient_patch_recovery, Z_Z posteriori error estimator
  9. windows11打开隐藏的gpedit.msc本地组策略编辑器以及禁止自动更新系统
  10. 赛维LDK重整方案被法院强裁通过