asyncio aiohttp lxml 网页爬虫实例

原因:查看asyncio ,aiohttp 和lxml配合的速度

# coding=utf-8
import asyncio
import logging
import time
from aiohttp import ClientSession
from lxml import etree

logging.basicConfig(
    level = logging.INFO,
    format = "%(asctime)s [*] %(message)s"
)
URL = "https://www.fabiaoqing.com/biaoqing/lists/page/{}.html"


# 提取图片标题,链接
def parse(source_):
    try:
        response = etree.HTML(source_)
        tagbqppdiv = response.xpath('//div[@class="tagbqppdiv"]/a')
        for index, img in enumerate(tagbqppdiv):
            args = (int(index + 1), img.xpath('@title')[0], img.xpath('img/@data-original')[0])
            logging.info('第 %d 张  标题:%r  链接:%r' % args)
    except Exception as e:
        print('解析详情页出错!')
        pass


# 获取网页源码
async def get_source(url_):
    try:
        async with ClientSession( ) as session:
            async with session.get(url_) as response:
                source = await response.read( )
                parse(source)
    except asyncio.CancelledError:
        raise


async def main( ):
    now = time.time( )
    tasks = [asyncio.ensure_future(get_source(URL.format(i)))
             for i in range(1, 201)]
    # 第一种运行方式-----------------------------------
    dones, pendings = await asyncio.wait(tasks)
    # 已完成的协程-------------------------------------
    # for done in dones:
    #     logging.info(f"已完成的协程:{done.result( )}")
    # 超时未完成的协程---------------------------------
    # for pending in pendings:
    #     logging.info(f"超时未完成的协程  :{pending}")
    #     pending.cancel( )

    logging.info(f"总用时:{time.time( ) - now}")


if __name__ == "__main__":
    event_loop = asyncio.get_event_loop( )
    # ------------------------------------------------
    try:
        # 用这个协程启动循环,协程返回时这个方法将停止循环。
        event_loop.run_until_complete(main( ))
    except KeyboardInterrupt:
        for task in asyncio.Task.all_tasks( ):
            print(task.cancel( ))
        event_loop.stop( )
    finally:
        event_loop.close( )

输出:最后附上一张图片

2019-10-13 22:06:51,243 [*]23 张  标题:'你这个臭居居(臭猪猪)'  链接:'http://wx1.sinaimg.cn/bmiddle/006i487Uly1fk9mhg5q4yj30b409qgm1.jpg'
2019-10-13 22:06:51,243 [*]24 张  标题:'撩骚的猪'  链接:'http://wx4.sinaimg.cn/bmiddle/814268e3ly1fl67k7p8zaj20hs0dldj8.jpg'
2019-10-13 22:06:51,243 [*]25 张  标题:'摇头赌气'  链接:'http://wx3.sinaimg.cn/bmiddle/ceeb653ely1fl9ggif8nwg203c02m0y7.gif'
2019-10-13 22:06:51,243 [*]26 张  标题:'各位土豪赏点钱帮我买条秋裤吧'  链接:'http://wx1.sinaimg.cn/bmiddle/006oOWahly1fl3pub76j9j30b40b4mxq.jpg'
2019-10-13 22:06:51,243 [*]27 张  标题:'卖鸡巴为生的贱男人'  链接:'http://ww3.sinaimg.cn/bmiddle/9150e4e5ly1fkycdb18ehj20c80dagma.jpg'
2019-10-13 22:06:51,243 [*]28 张  标题:'80 cm'  链接:'http://ww1.sinaimg.cn/bmiddle/9150e4e5ly1fkycgod22ij203c02bdfm.jpg'
2019-10-13 22:06:51,244 [*]29 张  标题:'信不信老子冲过去就是扇你B脸'  链接:'http://ww1.sinaimg.cn/bmiddle/9150e4e5ly1fkvwyj7nq2j205205ijr8.jpg'
2019-10-13 22:06:51,244 [*]30 张  标题:'城管执法,推着你的三轮儿赶紧滚'  链接:'http://ww2.sinaimg.cn/bmiddle/9150e4e5ly1fkvwz2f341j204l05iq2r.jpg'
2019-10-13 22:06:51,244 [*]31 张  标题:'拿烟的手,微微颤抖'  链接:'http://ww3.sinaimg.cn/bmiddle/9150e4e5ly1fkr9qasvmhg206o06yaag.gif'
2019-10-13 22:06:51,244 [*]32 张  标题:'别睡了,快醒醒!'  链接:'http://wx2.sinaimg.cn/bmiddle/ab4cb34aly1fku8rhb75aj20h40c8jt8.jpg'
2019-10-13 22:06:51,244 [*]33 张  标题:'我們的感情,回不去了'  链接:'http://ww1.sinaimg.cn/bmiddle/9150e4e5ly1fktmoy76g6j205l06yt8q.jpg'
2019-10-13 22:06:51,244 [*]34 张  标题:'嗨,三秒小鸡巴'  链接:'http://ww2.sinaimg.cn/bmiddle/9150e4e5ly1fkr9n7o0gkj2046025743.jpg'
2019-10-13 22:06:51,244 [*]35 张  标题:'别说了我同意睡你'  链接:'http://ww2.sinaimg.cn/bmiddle/9150e4e5ly1fkr9o8zyqvj205a05a3ym.jpg'
2019-10-13 22:06:51,244 [*]36 张  标题:'尖叫声!!'  链接:'http://ww1.sinaimg.cn/bmiddle/9150e4e5ly1fkr98rjfacj208s07gaa3.jpg'
2019-10-13 22:06:51,245 [*]37 张  标题:'你是想气死我这个小女孩吗(小刚几)'  链接:'http://wx4.sinaimg.cn/bmiddle/006APoFYly1fkqwejv8sxj30i20i2dh5.jpg'
2019-10-13 22:06:51,245 [*]38 张  标题:'么么哒'  链接:'http://ww4.sinaimg.cn/bmiddle/9150e4e5ly1fkonbjfm41j203c02wwe9.jpg'
2019-10-13 22:06:51,245 [*]39 张  标题:'你能亲我一口吗?最好伸舌头'  链接:'http://wx2.sinaimg.cn/bmiddle/9e31678cgy1fkoy8ah133j20hs0fgdgg.jpg'
2019-10-13 22:06:51,246 [*]40 张  标题:'让我干一炮(抱腿)'  链接:'http://ww2.sinaimg.cn/bmiddle/9150e4e5ly1fknuxz6typj20hs0dnafn.jpg'
2019-10-13 22:06:51,248 [*]41 张  标题:'它们说只要我喝的够多,寂寞就侵蚀不了我。猫咪坐在墙角喝酒抽烟'  链接:'http://wx2.sinaimg.cn/bmiddle/9e31678cgy1fkb2pvs7q9j20k00k0q4r.jpg'
2019-10-13 22:06:51,248 [*]42 张  标题:'你要的红包来了'  链接:'http://ww3.sinaimg.cn/bmiddle/6af89bc8gw1f8qaarg345j205i05iq2r.jpg'
2019-10-13 22:06:51,248 [*]43 张  标题:'看你妈,再看单杀你'  链接:'http://wx4.sinaimg.cn/bmiddle/005wAjLPly1fl7k2mu6esj30qo0qo16c.jpg'
2019-10-13 22:06:51,248 [*]44 张  标题:'最近有谣言说我喜欢你,我要澄清一下,这不是谣言(小猪佩奇)'  链接:'http://wx4.sinaimg.cn/bmiddle/814268e3ly1fl67kan9l4j20j60j6q4i.jpg'
2019-10-13 22:06:51,249 [*]45 张  标题:'哼,傻逼网友,发的仕么鸡巴'  链接:'http://ww4.sinaimg.cn/bmiddle/9150e4e5ly1fkvwypvycuj205e05djr9.jpg'

2019-10-13 22:06:51,268 [*] 总用时:14.914090394973755

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷心兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值