爬虫

单线程  爬去豆瓣250

import requests

from lxml import etree

from threading import Thread

import time

from queue import Queue

#单线程

base_url='https://movie.douban.com/top250?filter=&start='

movie_list=[]

for i in range(10):

    url1=base_url+str((i*25))

    response=requests.get(url=url1)

    content=response.content

    #接收数据

    content=content.decode('utf-8')

    html1 = etree.HTML(content)

    item_list=html1.xpath('//div[@class="item"]')

    for item in item_list:

        movie = {}

        movie['编号'] = item.xpath('./div[1]/em/text()')[0]

        movie['名称'] = item.xpath('./div[2]//a/span[1]/text()')[0]

        movie['评分'] = item.xpath('./div[2]//span[@class="rating_num"]/text()')[0]

        movie_list.append(movie)

print(len(movie_list))

#多线程

def douban(url1):

    response = requests.get(url=url1)

    content=response.content

    #接收数据

    content=content.decode('utf-8')

    html1 = etree.HTML(content)

    item_list=html1.xpath('//div[@class="item"]')

    for item in item_list:

        movie = {}

        movie['编号'] = item.xpath('./div[1]/em/text()')[0]

        movie['名称'] = item.xpath('./div[2]//a/span[1]/text()')[0]

        movie['评分'] = item.xpath('./div[2]//span[@class="rating_num"]/text()')[0]

        #自动创建锁防止多线程执行造成存储数据时发生混乱

        movie_list.put(movie)

if __name__ == '__main__':

    start_time=time.time()

    movie_list = Queue()

    base_url = 'https://movie.douban.com/top250?filter=&start='

    movie_list=[]

    thread_list=[]

    for i in range(10):

        url1=base_url+str((i*25))

        thread_spider=Thread(target=douban,args=[url1])

        thread_list.append(thread_spider)

        thread_spider.start()

    for thread_one in thread_list:

        thread_one.join()

    #防止主进程先运行到这句话,所以需要让住主进程等待子进程

    end_time = time.time()

    while not movie_list.empty():

        print(movie_list.get())

    print('爬取时间总结:%s' % (end_time - start_time))

#利用协程爬取数据

import requests

import json

import time

from lxml import etree

from threading import Thread

from queue import Queue

from gevent import  monkey

import gevent

import random

# gevent 让我们可以按同步的方式来写异步程序

# monkey.patch_all() 会在Python程序执行时动态的将网络库(socket,select,thread)

# 替换掉,变成异步的库,让我们的程序可以异步的方式处理网络相关的任务

monkey.patch_all()

def spider(url):

    response = requests.get(url=url,headers=headers,proxies = {'http':random.choice(proxies_ips)})

    content = response.content

    content = content.decode('utf-8')

    '''数据处理'''

    html = etree.HTML(content)

    item_list = html.xpath('//div[@class="item"]')

    for item in item_list:

        movie = {}

        movie['编号'] = item.xpath('./div[1]/em/text()')[0]

        print(movie['编号'])

        movie['名称'] = item.xpath('./div[2]//a/span[1]/text()')[0]

        movie['评分'] = item.xpath('./div[2]//span[@class="rating_num"]/text()')[0]

        movie_list.put(movie)

if __name__ == '__main__':

    proxies_ips = [

        'http://122.114.31.177:808',

        'http://61.135.217.7:80',

        'http://14.20.180.209:8118',

    ]

    headers={

         'Host':'movie.douban.com',

        'Referer':'https://accounts.douban.com/login?redir=https://movie.douban.com/top250?filter=&source=None',

        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',

    }

    start_time = time.time()

    # 存储数据

    movie_list = Queue()

    '''发送请求'''

    base_url = 'https://movie.douban.com/top250?filter=&start='

    gevent_spiders = []

    for i in range(10):

        url = base_url + str(i * 25)

        print(url)

        gevent_spider = gevent.spawn(spider,url)

        gevent_spiders.append(gevent_spider)

    gevent.joinall(gevent_spiders)

    end_time = time.time()

    print('爬取时间总结:%s' % (end_time - start_time))

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 我买了早上的车票,一早起醒来,望着窗外对面房子的檐角,闭了闭眼。不想离家,可又想念学校。矛盾。母亲说:等你回到学...
    等风的小疯子阅读 306评论 1 0
  • 今早,准备如约下楼和两个同班小朋友一起上学的萱,忽然说“妈妈,今天我想自己去上学,想让姥姥送我去。” 当时看出她的...
    sunfeng0912阅读 198评论 0 1
  • 他们住在高楼 ,我们淌在洪流。不为日子皱眉头, 答应你 ,只为吻你才低头。
    薛崔愿阅读 1,419评论 1 2