ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

爬虫协程爬取

2022-06-16 10:00:56  阅读:139  来源: 互联网

标签:xpath 协程 name url list 爬虫 html div


运用了python本身自带的协程库asyncio

协程的思路就是运用了多个程序作用一样

当程序有多个io操作时,会大大降低程序运行的效率

为了提高效率,我们在使用python协程库爬取的时候,当我们遇到一个函数中的io操作拖慢我们的时间时

协程可以让我们的cpu不停下来,去运行其他的代码,当其他的代码也遇到阻碍时再切换

代码如下:(目前还没有改好,修改完成后会再上传)

```

import requests
from lxml import etree
import asyncio

def base_url(i):
if (i == 1):
url = 'https://www.qjnu.edu.cn/channels/9260.html'
else:
url='https://www.qjnu.edu.cn/channels/9260_'+str(i)+'.html'

return url

def str(url):
request = requests.get(url)
request.encoding = 'utf-8'
html = etree.HTML(request.text)
return html

async def down_1(html):
name_list = html.xpath('//div[@class="media"]/h4/a/text()')
url_list = html.xpath('//div[@class="media"]/h4/a/@href')
for i in range(len(name_list)):
if key in name_list[i]:
with open('学校党员主题网址.txt', 'a', encoding='UTF-8') as fp:
fp.write(url_list[i] + '\n')

async def down_2(html):
name_list = html.xpath('//div[@class="media"]/h4/a/text()')
url_list = html.xpath('//div[@class="media"]/h4/a/@href')
for i in range(len(name_list)):
if key in name_list[i]:
tex_list = html.xpath('//div[@class="field-item even"]//p/span/text()')
name = name_list[i]
with open(name + '.txt', 'w', encoding='UTF-8') as fp:
fp.write(str(tex_list))

async def main(html):
tasks = [
down_1(html),
down_2(html)
]
await asyncio.wait(tasks)

if __name__ == '__main__':
page = int(input('请输入需要爬取的页数:'))
key = str(input('请输入要查找的关键词:'))
for i in range(1,page):
url = base_url(i)
html = str(url)
asyncio.run(main(html))

```

标签:xpath,协程,name,url,list,爬虫,html,div
来源: https://www.cnblogs.com/h-y-26/p/16380887.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有