爬虫抓取博客园前10页标题带有Python关键字(不区分大小写)的文章
写一个简易的爬虫程序,抓取博客园网站首页前10页中所有文章标题带有Python关键字(不区分大小写)的文章,并把文章链接和文章标题存入硬盘,要求如下:
- 使用正则表达式匹配出需要的数据,然后对数据进行解析
- 程序中很明显有多个任务,这多个任务必须是异步调用
- 任务的返回值要及时处理,不能等所有任务都执行完再统一处理
- 提示信息:可以使用生产者消费者模型来处理
- 尽可能提升程序的执行效率
爬虫储备知识:
requests模块是一个非常强大的爬虫模块,它的基本使用非常简单,但是它是所有爬虫程序的根源,我们只需要使用requests模块里面级简单的功能就能完成,用法可以通过查询得知。
"""
写一个简易的爬虫程序,抓取博客园网站首页前10页中所有文章标题带有
Python关键字(不区分大小写)的文章,并把文章链接和文章标题存入
硬盘,要求如下:
1 使用正则表达式匹配出需要的数据,然后对数据进行解析
2 程序中很明显有多个任务,这多个任务必须是异步调用
3 任务的返回值要及时处理,不能等所有任务都执行完再统一处理
4 提示信息:可以使用生产者消费者模型来处理
5 尽可能提升程序的执行效率
"""
# 基本思路与实现方案
import re
import time
import requests
t1 = time.time()
title_list = []
url = 'https://www.cnblogs.com/'
for i in range(1, 11):
html = requests.post(url=url, data={"PageIndex": i}).text
res = re.findall('<h3>.*?ython.*?</h3>', html)
for j in res:
title_list.append(j)
print(time.time() - t1)
# 异步思路与优化处理
import re
import requests
from concurrent.futures import ThreadPoolExecutor
import time
def catch(page):
title_list = []
url = 'https://www.cnblogs.com/'
html = requests.post(url=url, data={"PageIndex": page}).text
res = re.findall('<h3>.*?ython.*?</h3>', html)
for j in res:
title_list.append(j)
return title_list
def analyze(obj):
data = obj.result()
if data:
for j in data:
res = j.split("=")
link = res[2][1:-8]
title = res[3][9:-9]
with open('data.txt', mode='a', encoding='utf-8') as f:
f.write('%s|%s\n' % (title, link))
if __name__ == '__main__':
t1 = time.time()
tp = ThreadPoolExecutor(10)
for i in range(1, 11):
tp.submit(catch, i).add_done_callback(analyze)
print(time.time() - t1)
原创作者:马一特
文章出处:http://www.cnblogs.com/mayite/
版权声明:自由转载-非商用-非衍生-保持署名
(创意共享4.0许可证)
转载说明:如果文章对您有帮助,欢迎点赞,评论加转载,赠人玫瑰,手留余香
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?