python 爬取网页title 并行 bs4 beautifulsoup4

本文介绍了一种使用Python并行爬取大量URL的title的方法,通过将URL分块,利用多进程在服务器后台运行爬虫,最后合并去重得到结果。涉及到的步骤包括URL分块、创建爬虫脚本、后台并行运行、合并结果及去除重复项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预先准备:

python3、beautifulsoup4、bs4、内存较大的服务器

 

项目结构如下图所示:

 

思路:

为了爬取个数达百万级别的url的title,如果每个网页的延迟设置为1秒、串行爬取,大概消耗的时间将达数十万秒乃至数百万秒。

而一天仅有8万多(86400)秒,不可接受!

因此,我们采用并行的方法,利用url_distract_into_txts.py将存放url的txt文档out.txt分为9596个outi.txt文档,每个文档中存放400个url

利用nohup命令并行运行多个爬虫,在服务器后台爬取多个txt中的url的title,最后再将其合并、去重即可(out.txt需要经过预先的去重操作)

 

但是考虑到多进程对内存的巨大消耗,经测试,120G内存(服务器)仅可运行2500~3000个爬虫进程

因此需要在跑4次才能结束。大约会消耗半天的时间

 

做法:

1. 运行url_distract_into_txts.py,将存放url的txt文档out.txt分为9596个outi.txt文档,每个文档中存放400个url

2. 运行create.py,得到爬取 outi.txt的url并将其存入outputi.txt的py文件codei.py

3. 将文件夹的文件,除了out.txt,其余全部上传至服务器,利用nohup后台并行运行codei.py,每次运行2500个,共运行4次,一次时长小于1h

4. 方法1:运行merge_txt.py,将第3步得到的9000多个txt合并为一个

    方法2:参照文件夹中的最后一个txt文件——将多个txt合并成一个txt.txt

5. 运行del_the_same_line.py,去除重复行

6. 从服务器中下载最终得到的文件即可

 

代码如下:

1. url_distract_into_txts.py:

f = open("out.txt", e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值