分页请求json数据_Python爬虫入门教程 28-100 虎嗅网文章数据抓取 pyspider

041f3e3a8cc3db6fc6be61d0fe624a28.png

1. 虎嗅网文章数据----写在前面

今天继续使用pyspider爬取数据,很不幸,虎嗅资讯网被我选中了,网址为 https://www.huxiu.com/ 爬的就是它的资讯频道,本文章仅供学习交流使用,切勿用作其他用途。

常规操作,分析待爬取的页面

拖拽页面到最底部,会发现一个加载更多按钮,点击之后,抓取一下请求,得到如下地址

427830fb147ebbb6175bff1317431486.png

2. 虎嗅网文章数据----分析请求

查阅该请求的方式和地址,包括参数,如下图所示

e3bea4df6f34fc2d5847ba1fa2a85ed9.png

得到以下信息 1. 页面请求地址为:https://www.huxiu.com/v2_action/article_list 2. 请求方式:POST 3. 请求参数比较重要的是一个叫做page的参数

我们只需要按照上面的内容,把pyspider代码部分编写完毕即可。 on_start 函数内部编写循环事件,注意到有个数字2025这个数字,是我从刚才那个请求中看到的总页数。你看到这篇文章的时候,这个数字应该变的更大了。

@every(minutes=24 * 60)def on_start(self):for page in range(1,2025):print("正在爬取第 {} 页".format(page))self.crawl('https://www.huxiu.com/v2_action/article_list', method="POST",data={"page":page},callback=self.parse_page,validate_cert=False)

页面生成完毕之后,开始调用parse_page 函数,用来解析 crawl() 方法爬取 URL 成功后返回的 Response 响应。

@config(age=10 * 24 * 60 * 60)def parse_page(self, response):content = response.json["data"]doc = pq(content)lis = doc('.mod-art').items()data = [{'title': item('.msubstr-row2').text(),'url':'https://www.huxiu.com'+ str(item('.msubstr-row2').attr('href')),'name': item('.author-name').text(),'write_time':item('.time').text(),'comment':item('.icon-cmt+ em').text(),'favorites':item('.icon-fvr+ em').text(),'abstract':item('.mob-sub').text()} for item in lis ] return data

最后,定义一个 on_result() 方法,该方法专门用来获取 return 的结果数据。这里用来接收上面 parse_page() 返回的 data 数据,在该方法可以将数据保存到 MongoDB 中。

# 页面每次返回的数据            def on_result(self,result):if result:self.save_to_mongo(result)            # 存储到mongo数据库def save_to_mongo(self,result):df = pd.DataFrame(result)  content = json.loads(df.T.to_json()).values()if collection.insert_many(content):print('存储数据成功')# 暂停1stime.sleep(1)

好的,保存代码,修改每秒运行次数和并发数

c9ab8b57fb42957c8b045a9ba0174de7.png

点击run将代码跑起来,不过当跑起来之后,就会发现抓取一个页面之后程序就停止了, pyspider 以 URL的 MD5 值作为 唯一 ID 编号,ID 编号相同,就视为同一个任务, 不会再重复爬取。

GET 请求的分页URL 一般不同,所以 ID 编号会不同,能够爬取多页。 POST 请求的URL是相同的,爬取第一页之后,后面的页数便不会再爬取。

解决办法,需要重新写下 ID 编号的生成方式,在 on_start() 方法前面添加下面代码即可:

def get_taskid(self,task):return md5string(task['url']+json.dumps(task['fetch'].get('data','')))

基本操作之后,文章入库

73b647ed1165acc362f5f62191a05510.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bootstrap 导航菜单 折叠位置_教大家如何编写一个网页导航条

导航条简单地说就是对你整个网站模块的简单介绍,你可以直接点击导航条某一个按钮或板块便可进入其相应的界面,如:网页、新闻、贴吧等 。在企业网站上,导航条上常见的有:产品介绍,公司简介,最新产…

福建省高等学校非计算机考试大纲,福建省高等学校计算机应用水平等级考试三级(偏软)考试大纲...

福建省高等学校计算机应用水平等级考试三级(偏软)考试大纲2007年04月13日 星期五 9:55I、考试目的本考试考查考生以下知识与能力:1.具有较宽的计算机系统基础知识;2.掌握数据结构的基本类型、典型算法及其应用;3&#…

python拟合函数_Python-最小二乘法曲线拟合

行文思路:最小二乘法原理介绍 利用 leastsq() 函数进行最小二乘法拟合 拟合注意事项 利用curve_fit 进行最小二乘法拟合 总结: 参考文献 实现代码 一,最小二乘法拟合 最小二乘法是一种数学优化技术,它通过最小化误差的平方和寻找数…

计算机网络提高网络安全意识,提升网络安全意识 共创清朗网络环境

为增强公众网络安全意识,提高网络安全防护技能。近期,徐家营街道围绕“网络安全为人民、网络安全靠人民”活动主题,组织开展了“2020国家网络安全宣传周”活动,保障用户合法权益,维护国家网络安全。一、广泛宣传引导。…

base cap 分布式_干货分享:基于本地消息表的分布式事务解决方案总结

前段时间学习了分布式事务的几种方案,下面主要总结下基于本地消息表实现可靠消息最终一致性的分布式事务方案。1,什么是分布式事务?在传统架构中往往是一个单体架构,一个系统就对应一个war包,然后这个系统也只有一个数…

google protobuf_protobuf 指南

简介安装语言定义特殊指令定义服务JSON 支持选项生成代码基础类型更新 messageGolang 下使用参考简介Protocol Buffers 是 google 出品的一种数据交换格式, 缩写为 protobuf.主要介绍 proto3 版本和 Golang 下的使用.安装protobuf 分为编译器和运行时两部分. 编译器直接使用预编…

计算机无法装补丁,电脑无法安装kb4012212补丁如何处理|电脑无法安装kb4012212补丁的处理方法...

最近,不少用户的电脑都被《永恒之蓝》病毒侵袭,因此微软官方推出了预防补丁 — kb4012212,正常系统只要安装该补丁就能避免电脑遭到伤害。不过,有用户反馈自己遇到了电脑无法安装kb4012212补丁的情况,该怎么办呢&#…

shell181网格划分_ANSYS中SHELL181单元理解和参数详解 -

顶部和底部的平均值不合适的时候,你应该用这个选项来得到正确的中见面的结果(薄膜结果);例子中包含黑线性材料特性的中间面应力、应变 ,以及在包含诸如谱分析等测长操作的模态叠加之后的中间面结果。 KEYOPT(9) 1 用来从用户子程序中读取初始厚度数据。…

使用计算机绘制景物图像的两个主要步骤是,计算机11考试.doc

文档介绍:第五章[4]. 一张CD盘片上存储的立体声高保真全频带数字音乐约可播放一小时,则其数据量大约是______。A、800MBB、635MBC、400MBD、1GB[6]. 卫星数字电视和新一代数字视盘DVD采用______作为数字视频压缩标准。MPEG-2 | MPEG2[10]. 声卡在计算机中用于完成声…

mysql在哪里写代码_[译] 如何写好 Go 代码

原文:https://scene-si.org/2018/07/24/writing-great-go-code/我写了多年的 Go 微服务,并在写完两本关于 (API Foundations in Go 和 12 Factor Applications with Docker and Go) 主题的书之后,有了一些关于如何写好 Go 代码的想法但首先&a…

学画画软件app推荐_路由器管理软件哪个好?6款路由器管理APP推荐_软件评测

无限网络应用越来越广泛,由此应运而生了许多可以蹭网的软件,家里的网速突然变慢了,也许就是隔壁的小哥哥小姐姐在蹭网络,那么如何避免被蹭网?今天小编给各位小伙伴推荐几款路由器管理软件,发现网络变慢了&a…

408计算机考研 各科题目题号,2021考研408计算机专业基础综合数据结构试题特点分析...

2021考研408计算机专业基础综合数据结构试题特点分析2021考研初试结束后,新东方在线考研网为各位考研考生梳理"2021考研408计算机专业基础综合数据结构试题特点分析"内容,同时新东方在线考研各研究院院长针对2021考研各科目试题变化及难度进行…

各个图标的意思_冬奥体育图标设计团队负责人林存真:每一个图标要画100稿以上...

林存真中央美术学院设计学院副院长、北京冬奥组委文化活动部形象景观艺术总监、北京冬奥会体育图标设计团队负责人。12月31日晚,北京2022年冬奥会和冬残奥会体育图标正式发布。在体育图标发布前夕,新京报记者采访了北京冬奥会体育图标设计团队的负责人&a…

delphi制作上下开幕效果_2019中超联赛揭幕战在深圳举行 现场开幕式亮点多多

3月2日晚,2019中超联赛开幕式在深圳大运中心体育场举行。随着中国足协党委书记杜兆才正式宣布2019年中超联赛开幕,以“超精彩”为口号的2019新赛季中超联赛正式打响。本赛季中超联赛是出台“注资帽”、“薪酬帽”、“奖金帽”、“转会帽”之后的第一个赛…

ae正在发生崩溃_AE错误:正在发生崩溃的解决方法,原创问题解决方案

AE在使用过程中,可能会出现一些问题。有的问题是莫名其妙出现。例如刚刚还在正常使用AE软件,下一次再打开的时候就会出现问题。今天给大家说的是如何去解决after effects错误:正在发生崩溃这个问题 。该问题所提供的解决方法为实际操作过,并成功解决。所以才写出来给大家提…

计算机二级公共,计算机二级公共基础知识

计算机二级公共基础知识计算机二级考试包括计算机基础知识。虽然分值不高但是我们还是要把握好每一分。下面百分网小编整理了相关计算机二级公共基础知识,希望大家喜欢。计算机二级公共基础知识1.1栈和队列1、栈及其基本运算栈是限定在一端进行插入与删除运算的线性…

echarts map 点击地图区域变色_绘制炫酷的地图,不只是pyecharts.map!

导读:地图可视化是一种非常直观的数据分析结果展现形式,python有很多可视化库可以实现,pyecharts就是很多python爱好者喜爱的实现地图可视化方法之一。不可否认,pyecharts绘制的地图实现方便、图形美观而且支持交互,但…

金蝶kis专业版公网访问_金蝶KIS云专业版—【账务处理】进阶操作101问

对KIS专业版【账务处理】模块日常操作之外的各种问题进行回答,帮助老师们快速进阶此模块的操作,提高软件的便利性。1.专业版资产负债表如何移动表页位置?【操作步骤】 1、单击【报表与分析】-【资产负债表】;2、单击左上角菜单栏【…

奥鹏东师计算机应用基础18,免费在线作业答案奥鹏东师计算机应用基础15秋在线作业1试卷及答案(1)...

奥鹏东师计算机应用基础15秋在线作业1试卷及答案(1)一、单选题(共25道试题,共62.5分。)1.在Excel 中保存的工作簿默认的文件扩展名是()。A. XLSB. DOCC. DBFD. TXT正确答案:A2.中文Windows 2000的“桌面”是指()。A. 整个屏幕B. 某个窗口2015奥鹏作业答案…

es集群搭建_滴滴Elasticsearch 集群跨版本升级与平台重构之路

前不久,滴滴ES团队将维护的30多个ES集群,3500多个ES节点,8PB的数据,从2.3.3跨大版本无缝升级到6.6.1。在对用户查询写入基本零影响和改动的前提下,解决了ES跨大版本协议不兼容、文件格式不兼容、mapping不兼容等难题&a…