import requests
from lxml import etreeclass Spider():def __init__(self):# 起始页self.start_url = "https://36kr.com/"# 请求头self.headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}# 域名self.host = "https://36kr.com"def start(self):# 爬取起始页# 第一页HTML = 爬取起始页的方法index_html = self.parse_url(self.start_url)print(index_html)# 获取下一页内容# 下一页url = 获取下一页内容(第一页HTML)eobj = etree.HTML(index_html)res = eobj.xpath('//a[text()="查看更多资讯"]/@href')[0]print(res)next_url = self.host + res# 第一次点击 获取更多first_more_html = self.parse_url(next_url)# first_more_html 就是 https://36kr.com/information/web_news 页面的html代码# 所有的文章容器div //div[@class="information-flow-item"]# 最后一个文章的div  //div[@class="information-flow-item"][last()]# 第一次更看更多的,列表html页的对象first_more_obj = etree.HTML(first_more_html)last_div = first_more_obj.xpath('//div[@class="information-flow-item"][last()]')[0]print(last_div)anchor_div_class = last_div.xpath("./div[1]/@class")[0]# anchor - 69141print(anchor_div_class)# 取69141import reb_id = re.search(r"\d+", anchor_div_class).group()# 匹配成功的结果对象.group()print(b_id)# 接口的拼接完毕next_data_api = "https://36kr.com/pp/api/aggregation-entity?type=web_latest_article&b_id={}&per_page=30".format(b_id)print(next_data_api)# 下一个接口的数据# 直接从next_data_api中取最后一个新闻的id字段# 用id字段对应的6什么什么开头的值,可以拼出下一个接口# 思路:正则拿# 正则式的写法: re.compile(r'<a class="kr-home-flow-see-more" href="(.*?)">查看更多资讯</a>')# 最终可以得到, "/information/web_news?anchor=68962"# 下一页的url   https://36kr.com/information/web_news?anchor=68962# https://36kr.com/information/web_news?anchor=68957# 第三页的内容# 发一个ajax请求# https://36kr.com/pp/api/aggregation-entity?type=web_latest_article&b_id=68892&per_page=30# https://36kr.com/pp/api/aggregation-entity?type=web_latest_article&b_id=68848&per_page=30# 推理出第四页的内容# https://36kr.com/pp/api/aggregation-entity?type=web_latest_article&b_id=68847&per_page=30# 第五页的内容# https://36kr.com/pp/api/aggregation-entity?type=web_latest_article&b_id=68817&per_page=30def parse_url(self, url):res = requests.get(url, headers=self.headers)return res.content.decode()s = Spider()
s.start()

爬虫-36kr-使用xpath爬取数据-part1-提取接口所需的6开头的数字-拼接下一个接口的路径相关推荐

  1. Python爬虫如何实用xpath爬取豆瓣音乐

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  2. python爬虫实战之异步爬取数据

    python爬虫实战之异步爬取数据 文章目录 前言 一.需求 二.使用步骤 1.思路 2.引入库 3.代码如下 总结 前言 python中异步编程的主要三种方法:回调函数.生成器函数.线程大法. 以进 ...

  3. 使用xpath爬取数据

    使用xpath来提取数据,爬取数据的简单语法. 下载模块 快速下载模块 pip install lxml 导入模块 from lxml import etree 利用xpath获取text或者href ...

  4. python3 [入门基础实战] 爬虫入门之xpath爬取脚本之家python栏目

    这次爬取的确实有些坎坷,经过了两个晚上吧,最后一个晚上还是爬取数据到最后一公里了,突然报错了.又得继续重新进行爬取 先来个爬取结果图,这次爬取的是标题,url,还有日期,估计也就只有这么多内容,用的单 ...

  5. 爬虫-14-利用代理爬取数据

    获取一个代理 从免费代理的网站取一条数据 例如: 免费代理 - IP海 http://www.iphai.com/free/ng 60.12.89.218 33920 高匿 HTTPS 中国浙江嘉兴 ...

  6. Python爬虫进阶之多线程爬取数据并保存到数据库

    今天刚看完崔大佬的<python3网络爬虫开发实战>,顿时觉得自己有行了,准备用appium登录QQ爬取列表中好友信息,接踵而来的是一步一步的坑,前期配置无数出错,安装之后连接也是好多错误 ...

  7. Python常用插件类举,lxml+Xpath实现爬虫,使用Xpath爬取链家二手房源信息

    目录 一.XPath 二.XPath 常用规则 三.在谷歌浏览器安装XPath插件 四.Python爬虫常用插件 五.使用Xpath解析 六.Xpath匹配示例 1.查看所有的标签(如p.a.li标签 ...

  8. Python爬虫之利用xpath爬取ip代理网站的代理ip

    爬虫工具 python3 pycharm edge/chrome requests库的用法 requests库是python中简单易用的HTTP库 用命令行安装第三方库 pip install req ...

  9. 爬虫爬评书吧_爬虫学习:xpath爬取评书网

    在家闲着,想找点评书听,但找了很久都没找到方便打包下载的地方.于是就拿起自学的python爬虫,自己动手丰衣足食. 运行环境:Windows7,python3.7 操作步骤: 1.打开选好的评书主页面 ...

最新文章

  1. (转)HBase二级索引与Join
  2. 机智云官网用到的库-grid.css我解析
  3. 最简单的nagios监控内存插件(shell)
  4. DevOps笔记-01:软件交付面临的问题、软件工程的三个发展阶段、什么是DevOps?
  5. 成功解决IndexError: arrays used as indices must be of integer (or boolean) type
  6. Python爬虫开发:requests库的使用--ip代理参数的设置
  7. 丑憨批的爬虫笔记3(实例)
  8. 可能是全网最全的 Java 日志框架适配、冲突解决方案
  9. html表格列平分行,CSS布局问题 , 如何实现一行多列div,类似于表格
  10. neo4j︱图数据库基本概念、操作罗列与整理(一)
  11. 合并出错:svn Working copy and merge source not ready for reintegration
  12. 3GPP TS 23502-h20 中英文对照 | 4.15.6.2 NEF service operations information flow
  13. 全球打工人的抗争!谷歌员工希望更公平,国内只求告别996
  14. vb.net产生随机数Random代码实例
  15. layui菜鸟教程--乐字节前端
  16. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
  17. Alarmmanager制作简单闹钟功能
  18. Ubuntu 测网速
  19. 第22次CSP认证 第4题 校门外的树(3种方法,非常详细)(类dp+数学)
  20. html 下拉菜单不能下拉_音乐下拉菜单

热门文章

  1. phpcmsV9 QQ登录问题分析 - 踩坑篇
  2. 趣味娱乐小程序源码多流量主 趣味制作/藏头诗/隐藏图
  3. 酷黑风个人主页+引导页源码
  4. python3抓取b站弹幕_python3写爬取B站视频弹幕功能
  5. WordPress主题-果核剥壳站长开发CorePress v2.6
  6. 小度智能音响拆解 芯片_打磨小度智能音箱:深度拆解,发掘升级潜能
  7. python拼图游戏代码,OpenCV Python实现拼图小游戏
  8. 小说网站程序源码 自动采集 SEO优化
  9. RabbitMQ入门学习系列(二),单生产者消费者
  10. Sandy Bridge 12款双核心产品正式入列 Core i7-2620M Core i5-2540M