首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享"一只爬虫"

分享"一只爬虫"

作者头像
谢伟
发布2018-06-06 13:28:26
6110
发布2018-06-06 13:28:26
举报
文章被收录于专栏:GopherCoderGopherCoder

自接触爬虫以来,不管你有意识还是无意识都会不断的接触到这些概念:[多线程]、[多进程]、[协程]、[异步]...

本文分享一种对异步I/O支持操作的异步库asyncio的操作方法。

asyncio 是一种使用单线程、单个进程的方式切换

1. 主题:抓取开智读物书籍标题

2017年需要多多读书,立下的小目标是读25本非虚构类外国经典读物,时长大于100小时,每本书至少解决一个比较大的困惑。

这批书单比较有参考意义。

1483881852969.png

2. 环境及库

  • python3.5
  • asyncio
  • aiohttp
  • lxml
  • xpath

3.实践

1483881971121.png

只提取上文提到的书籍名称,其他类似,无非是不断的熟悉xpath或者其他解析方法的使用。

  • 网址
list_url = ["https://www.douban.com/doulist/41691053/?start={}&sort=seq&sub_type=4".format(number) for number in range(0, 125, 25)]
  • 获取网页源代码
async def fetch(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as html:
            response = await html.text(encoding="utf-8")
            return response
  • 解析网页源代码
async def parser(url):
    response = await fetch(url)
    print(response)
    dom = etree.HTML(response)
    selector = dom.xpath('//div[starts-with(@id,"item")]')
    for one in selector:
        print(one.xpath('div//div[@class="title"]/a/text()')[0].strip("\n").strip())
  • 事件循环
// 给一个函数添加了async关键字,就会把它变成一个异步函数
// 每个线程有一个事件循环,主线程调用asyncio.get_event_loop时会创建事件循环

// 把异步的任务丢给这个循环的run_until_complete方法,事件循环会安排协同程序的执行


loop = asyncio.get_event_loop()
tasks = [parser(url) for url in list_url]
loop.run_until_complete(asyncio.gather(*tasks))
  • 结果
失控
大自然如何工作
找工作
结构洞
创新的扩散
六度分隔
网络、群体与市场
链接
A New Kind of Science
怎样解题
统计数字会撒谎
啊哈,灵机一动
什么是数学
普林斯顿数学指南(第一卷)
大宇之形
黑客与画家
程序员的思维修炼
信息简史
软件随想录
程序员修炼之道
人月神话
"笨办法"学Python
追忆
唐宋词十七讲
马奇论管理
追寻记忆的痕迹
适应性思维
简捷启发式
笛卡尔的错误
Self Comes to Mind
社会认同过程
社会表征
看见成长的自己
成功,动机与目标
幸福的真意
创造力
失败的逻辑
为什么学生不喜欢上学?
象与骑象人
人格解码
出类拔萃的IQ
我们赖以生存的隐喻
态度改变与社会影响
持续的幸福
心灵导论
对权威的服从
亲密关系(第5版)
思维与决策(第四版)
复杂
隐秩序
风格的要素
文章作法
The Sense of Style
翻译乃大道
这就是纽约
埃科谈文学
一位年轻小说家的自白
修辞认识
《玩具屋》九讲
红玫瑰与白玫瑰
毛姆短篇小说精选集
青年王阳明:行动中的儒家思想(杜维明作品系列)
阳明学述要
王阳明大传:知行合一的心学智慧(全三册)
宗教与神话
如何理解中国人
中国人的心理
人情与面子
改变
行动科学
我生活的种种模式
致青年学者
Letters to a Young Scientist
反叛的科学家
论对话
哥德尔、艾舍尔、巴赫
经验的疆界
创新算法
莎士比亚、牛顿和贝多芬
基地
物种起源
自私的基因
The Extended Phenotype
地球上最伟大的表演
Darwin's Dangerous Idea: Evolution and the Meanings of Life
心灵种种
Intuition Pumps and Other Tools for Thinking
熊猫的拇指
生命的壮阔
魔鬼出没的世界
超越智商
机器人叛乱
这才是心理学
思考,快与慢
语言本能
心智探奇
人性中的善良天使
奖励的惩罚
无条件养育
进化心理学
穷查理宝典-查理.芒格的智慧箴言录-增订本
卓有成效的管理者
形式综合论
设计心理学
创新者的窘境(全新修订版)
技术与文明
奇特的一生
如何把事情做到最好
追时间的人

完:

新年愿景:

  • 学会js,scala
  • 读更多的书:技术 + 人文
  • 寻找机会展示:PPT
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.01.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 主题:抓取开智读物书籍标题
  • 2. 环境及库
  • 3.实践
  • 完:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档