写点什么

5 行 Python 爬虫代码,就能采集每日资讯 @_@

作者:梦想橡皮擦
  • 2022 年 9 月 27 日
    河北
  • 本文字数:1109 字

    阅读完需:约 4 分钟

⛳️ 实战场景

他,78 技术人社群的一个新人他,每天都给大家分享今日新闻他,正在学习 Python 他,昨天忽然觉得 Python 爬虫可以替代他手动操作。


擦哥说,一个初级爬虫工程师,即将诞生了,没准还是一个实战型程序员,用编程解决自己重复性的动作。


具备每日资讯的站点非常多,这次咱们选择:365 资讯简报,一个内容号,在 ==163== 的地址如下所示:


https://www.Python地址加密.com/dy/media/T1603594732083.html
复制代码


该账号每天做的事情就是【每天发一下新闻汇总】,然后前文的【他】把新闻搬到 78 技术人中来。


⛳️ 编码时间

上文提及的页面简单的分析之后,发现没有任何反爬技术,直接写代码,直接拿数据即可。


编码直接采用 requestslxml 库即可,代码直接面向过程编程。


由于是写给新手的教程,所以模块的安装必须提及一下:


pip install requests,lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码


然后梳理一下逻辑:


  • 第一步:采集列表页,然后循环进入详情页;

  • 第二步:采集详情页数据。


需求清晰,代码编写就变得简单了,直接走起,代码关键点都在注释中进行说明。


# 导入模块import requestsfrom lxml import etree
# 设置请求地址,直接上常量# 新闻列表页面地址URL = "https://www.Python地址加密.com/dy/media/T1603594732083.html"# 设置请求头headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'}# 获取新闻列表页resp = requests.get(URL, headers=headers).texthtml = etree.HTML(resp)
# 获取第一条新闻today_url = html.xpath("//ul[@class='list_box cur']/li/a/@href")[0]
# 获取详情页数据resp_1 = requests.get(today_url, headers=headers).texthtml_1 = etree.HTML(resp_1)
# 获取新闻详情news_list = html_1.xpath('//div[@class="post_body"]/p[2]//text()')[1:]print(news_list)
复制代码


由于我们的目标是获取当日新闻,即获取列表页最新的一条数据,所以无需通过循环获取,直接定位到首条数据即可。


再次阅读代码,其实可以发现其中仅包含两个重要函数,其一是 requests.get(),该对象方法用户获取目标站点网页响应数据。其二是 html_1.xpath(),该方法用于提取响应源码中的目标数据,即新闻聚合数据,学习的时候,重点关注这两个函数即可。


此时留给大家一个扩展需求,你可以将上述代码优化到几行呢?尝试一下,是否可以用 5 行以内代码完成相同的需求呢,这样就能满足我们的标题啦~


📢📢📢📢📢📢💗 你正在阅读 【梦想橡皮擦】 的博客👍 阅读完毕,可以点点小手赞一下🌻 发现错误,直接评论区中指正吧📆 橡皮擦的第 <font color=red>714</font> 篇原创博客


发布于: 刚刚阅读数: 3
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
5 行 Python 爬虫代码,就能采集每日资讯@_@_9月月更_梦想橡皮擦_InfoQ写作社区