首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫抓取博客园前10页标题带有Python关键字(不区分大小写)的文章

爬虫抓取博客园前10页标题带有Python关键字(不区分大小写)的文章

作者头像
马一特
发布2020-09-08 11:22:26
1.2K0
发布2020-09-08 11:22:26
举报
文章被收录于专栏:马一特马一特马一特

写一个简易的爬虫程序,抓取博客园网站首页前10页中所有文章标题带有Python关键字(不区分大小写)的文章,并把文章链接和文章标题存入硬盘,要求如下:

  1. 使用正则表达式匹配出需要的数据,然后对数据进行解析
  2. 程序中很明显有多个任务,这多个任务必须是异步调用
  3. 任务的返回值要及时处理,不能等所有任务都执行完再统一处理
  4. 提示信息:可以使用生产者消费者模型来处理
  5. 尽可能提升程序的执行效率

爬虫储备知识: 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)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档