python3 爬取36氪新闻网页
发布日期:2021-06-28 19:08:22
浏览次数:2
分类:技术文章
本文共 2471 字,大约阅读时间需要 8 分钟。
一个做了反爬的36氪,返回数据恶心,感觉是一堆垃圾。这里只是记录一下爬取过程。
(一)爬取环境
- win10
- python3
- scrapy
(二)爬取过程
(1)入口:搜索
(2)动态js数据加载,查看下一页操作:
(3)返回数据:
(4)请求链接
http://36kr.com/api//search/entity-search?page=4&per_page=40&keyword=机器人&entity_type=post&ts=1532794031142&_=1532848230039
(4)列表页的json数据,id为详情页链接所需标志
(5)详情页数据
抓取内容:
字段:标题,作者,日期,简要,标签,内容
查看源码,数据全在var props所包含的script标签里面
(6)正则获取并将之转为正常的json数据(理由:json文件可以更好的获取某个字段的内容,单纯全用正则截取的话,不好获取或者直接是获取不到)
源码:
# -*- coding: utf-8 -*-# @Time : 2018/7/28 17:13# @Author : 蛇崽# @Email : 643435675@QQ.com 1532773314218# @File : 36kespider.pyimport jsonimport reimport scrapyimport timeclass ke36Spider(scrapy.Spider): name = 'ke36' allowed_domains = ['www.36kr.com'] start_urls = ['https://36kr.com/'] def parse(self, response): print('start parse ------------------------- ') word = '机器人' t = time.time() page = '1' print('t',t) for page in range(1,200): burl = 'http://36kr.com/api//search/entity-search?page={}&per_page=40&keyword={}&entity_type=post'.format(page,word) yield scrapy.Request(burl,callback=self.parse_list,dont_filter=True) def parse_list(self,response): res = response.body.decode('utf-8') # print(res) jdata = json.loads(res) code = jdata['code'] timestamp = jdata['timestamp'] timestamp_rt = jdata['timestamp_rt'] items = jdata['data']['items'] m_id = items[0]['id'] for item in items: m_id = item['id'] b_url = 'http://36kr.com/p/{}.html'.format(str(m_id)) # b_url = 'http://36kr.com/p/5137751.html' yield scrapy.Request(b_url,callback=self.parse_detail,dont_filter=True) def parse_detail(self,response): res = response.body.decode('utf-8') content = re.findall(r'',res) temstr = content[0] minfo = re.findall('\"detailArticle\|post\"\:(.*?)"hotPostsOf30',temstr)[0] print('minfo ----------------------------- ') minfo = minfo.rstrip(',') jdata = json.loads(minfo) print('j'*40) published_at = jdata['published_at'] username = jdata['user']['name'] title = jdata['user']['title'] extraction_tags = jdata['extraction_tags'] content = jdata['content'] print(published_at,username,title,extraction_tags) print('*'*50) print(content)
更多资源请访问:
欢迎光临我的小网站:
陆续优化中,后续会开发更多更好玩的有趣的小工具
转载地址:https://blog.csdn.net/xudailong_blog/article/details/81271675 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月17日 14时35分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
HTTP协议工作原理、工作过程
2019-04-29
抖音视频批量去水印,抖音视频批量解析下载方法 - 2020年6月最新有效
2019-04-29
linux下redis安装遇到的问题及解决办法
2019-04-29
历史数据解决方案
2019-04-29
【基础+实战】JVM原理及优化系列之一:JVM体系结构
2019-04-29
【基础+实战】JVM原理及优化系列之二:JVM内存管理
2019-04-29
【基础+实战】JVM原理及优化系列之三:JVM垃圾收集器
2019-04-29
【基础+实战】JVM原理及优化系列之四:JVM参数说明
2019-04-29
【基础+实战】JVM原理及优化系列之五:JVM默认设置
2019-04-29
【基础+实战】JVM原理及优化系列之六:JVM主要调优参数
2019-04-29
【基础+实战】JVM原理及优化系列之七:JVM调优注意事项
2019-04-29
【基础+实战】JVM原理及优化系列之八:如何查看JVM参数配置?
2019-04-29
【基础+实战】JVM原理及优化系列之九:JVM监控、分析与故障处理实战
2019-04-29
【基础+实战】JVM原理及优化系列之十:JVM内存泄漏专题实战
2019-04-29
Redis高可用架构 (redis主从+sentinel)
2019-04-29
【重磅推出】性能提升100倍的性能测试监控优化方法
2019-04-29
Spring cloud微服务框架简介
2019-04-29
架构设计 - 如何解除依赖
2019-04-29
tomcat内存优化及问题排查
2019-04-29
生产环境tomcat参数设置建议
2019-04-29