小福利,用gevent多协程高效爬取海量数据

大家好,我是天空之城,今天给大家带来小福利,用gevent多协程高效爬取海量数据
话不多说,代码如下

from gevent import monkey
monkey.patch_all()
import gevent,time,requests
from bs4 import BeautifulSoup
from gevent.queue import Queue
start = time.time()

header = {
      'Referer': 'https://movie.douban.com/top250?start=1&filter=',
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:46.0) Gecko/20100101 Firefox/46.0'}

url_list =[]
for i in range(0,225,25):
    url='https://movie.douban.com/top250?start={}&filter='.format(str(i))
    url_list.append(url)

work=Queue()
for url in url_list:
    work.put_nowait(url)

def crawler():
    while not work.empty():
        url = work.get_nowait()
        res = requests.get(url,headers=header)
        film = res.text
    #这里的res.text就是获取到的整个网页的所有源代码了,下面利用 'html.parser'模块进行网页数据的解析
        soup = BeautifulSoup(film, 'html.parser')
    #首先获取到了所有li标签下面的<‘div’,class_="item">标签,构成一个大的列表
        items = soup.find_all("div",class_="item")
    #对列表进行遍历,获取每一部电影的相关信息
        for item in items:
            xuhao=item.find('em').text #序号
            title=item.find(class_="title").text #电影名称
            pingfen=item.find(class_="rating_num").text #评分
            comment=item.find(class_="inq") #评论
            if comment==None:
                comment=''
            else:
                comment = item.find(class_="inq").text  # 评论

            link=item.find('a')['href'] #网址
            #打印一下我们获得的信息
            print(xuhao,title,pingfen,comment,link)


task_list=[]
for x in range(5):
    task=gevent.spawn(crawler)
    task_list.append(task)
gevent.joinall(task_list)


获取数据截图如下
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值