5 行 Python 爬虫代码,就能采集每日资讯@_@
⛳️ 实战场景
他,78 技术人社群的一个新人
他,每天都给大家分享今日新闻
他,正在学习 Python
他,昨天忽然觉得 Python 爬虫可以替代他手动操作。
擦哥说,一个初级爬虫工程师,即将诞生了,没准还是一个实战型程序员,用编程解决自己重复性的动作。
具备每日资讯的站点非常多,这次咱们选择:365 资讯简报,一个内容号,在 ==163== 的地址如下所示:
https://www.Python地址加密.com/dy/media/T1603594732083.html
该账号每天做的事情就是【每天发一下新闻汇总】,然后前文的【他】把新闻搬到 78 技术人中来。
⛳️ 编码时间
上文提及的页面简单的分析之后,发现没有任何反爬技术,直接写代码,直接拿数据即可。
编码直接采用 requests
和 lxml
库即可,代码直接面向过程编程。
由于是写给新手的教程,所以模块的安装必须提及一下:
pip install requests,lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
然后梳理一下逻辑:
- 第一步:采集列表页,然后循环进入详情页;
- 第二步:采集详情页数据。
需求清晰,代码编写就变得简单了,直接走起,代码关键点都在注释中进行说明。
# 导入模块
import requests
from 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).text
html = etree.HTML(resp)
# 获取第一条新闻
today_url = html.xpath("//ul[@class='list_box cur']/li/a/@href")[0]
# 获取详情页数据
resp_1 = requests.get(today_url, headers=headers).text
html_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行以内代码完成相同的需求呢,这样就能满足我们的标题啦~
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 714 篇原创博客
- 点赞
- 收藏
- 关注作者
评论(0)