import asyncio
from aiohttp import ClientSession
from lxml import etree
from urllib.parse import urljoin
tasks = []
url = "http://www.hainan.gov.cn/hainan/5309/list3_{}.shtml"
async def crawl(url):
async with ClientSession() as session:
async with session.get(url) as response:
print(response.url)
return await response.text()
dtasks=[]
def parse(html):# 解析详情页
text = etree.HTML(html)
# title = text.xpath('//div[@class="list-right_title fon_1"]/a/text()')
# print(title)
# 详情url
d_url = text.xpath('//div[@class="list-right_title fon_1"]/a/@href')
d_url = [urljoin('http://www.hainan.gov.cn',i) for i in d_url]
print(d_url)
for dd_url in d_url:
task = asyncio.ensure_future(crawl(dd_url))
dtasks.append(task)
result = loop.run_until_complete(asyncio.gather(*dtasks))
for html in result:
parse_detail(html)
def parse_detail(html):
text = etree.HTML(html)
title = text.xpath('//ucaptitle/text()')[0].strip()
print(title)
def run():
for i in range(2,6):
task = asyncio.ensure_future(crawl(url.format(i)))
tasks.append(task)
result = loop.run_until_complete(asyncio.gather(*tasks))
for html in result:
parse(html)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
run()
loop.close()
async的demo
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前言 近期工作比较空闲,项目上线重构任务还没有开始,所以这几天学习了一些GCD的知识,发现了一个挺有意思也挺有用的...
- 这篇文章是上一篇的后续 【Promise】从小程序简单的登录逻辑说promise 未完待续... 在简书的最后一篇...
- 参考链接:http://www.ruanyifeng.com/blog/2015/04/generator.htm...