Fork me on GitHub

线程池的异步爬取

线程池的异步爬取

import requests
from lxml import etree
url = 'https://www.qiushibaike.com/text/page/%d/'
urls = []
for page in range(1,11):
    new_url = format(url%page)
    urls.append(new_url)

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
}
#该函数只可以有一个参数
def get_request(url):
    '''
    :param url: 每个页面url
    :return: 每个页面的所有作者
    '''
    author_list = []
    res =requests.get(url,headers=headers).text
    tree = etree.HTML(res)
    div_list = tree.xpath('//*[@id="content-left"]/div')
    for div in div_list:
        author = div.xpath('./div[1]/a[2]/h2/text() | ./div[1]/span[2]/h2/text()')
        author_list.append(author)
    return author_list

from multiprocessing.dummy import Pool
pool = Pool(10)
response_test_list = pool.map(get_request,urls)#自定义函数,列表或者字典

print(sum(sum(response_test_list,[]),[]))
posted @   是阿凯啊  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示