使用单/双/四进程爬虫爬取嗅事百科

1.本例子为一个单/双/四进程爬虫耗时对比
2.顺带练习了爬取嗅事百科生成字典写入文件中的方法
3.练习正则表达式的使用
4.代码如下:

import re
import time
import requests
import json
from multiprocessing import Pool
headers = {
 'User - Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'
}
def re_scraper(url):
    res = requests.get(url, headers=headers)
    names = re.findall('<h2>(.*?)</h2>', res.text, re.S)
    contents = re.findall('<div class="content">.*?<span>(.*?)</span>', res.text, re.S)
    laughs = re.findall('<i class="number">(\d+)</i> 好笑', res.text, re.S)
    comments = re.findall('<i class="number">(\d+)</i> 评论', res.text, re.S)
    infos = list()
    for name, content, laugh, comment in zip(names, contents, laughs, comments):
        info = {
            'name': name,
            'content': content,
            'laugh': laugh,
            'comment': comment
        }
        infos.append(info)
    with open(r"D:\Python_Test\text.txt", "w", encoding='utf-8') as filewriter:
        for item in infos:
            filewriter.write(json.dumps(item, ensure_ascii=False))
            filewriter.write('\r\n')


if __name__ == '__main__':

   urls = ["https://www.qiushibaike.com/8hr/page/{}/".format(str(i)) for i in range(1, 26)]
   start_1 = time.time()
   for url in urls:
       re_scraper(url)
   end_1 = time.time()
   print("串行型爬虫耗时:", end_1-start_1)

   start_2 = time.time()
   pool = Pool(processes=2)
   pool.map(re_scraper, urls)
   end_2 = time.time()
   print('2进程爬虫耗时:',end_2-start_2)

   start_3 = time.time()
   pool = Pool(processes=4)
   pool.map(re_scraper, urls)
   end_3 = time.time()
   print('4进程爬虫耗时:', end_3 - start_3)

学习总结,高手勿拍砖

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值