参考链接 Tag: 爬虫
线程简单来说就是爬虫程序中的一个命令执行。单线程就是爬虫程序执行一个命令,多线程就是爬虫程序同时运行多个命令,多线程不仅能提高速度,也能加快采集进度。当然多线程也有优点,也有缺点,线程也是爬虫程序中的一部分,使用多线程会占用爬虫程序的内存,有可能会导致占用的内存越来越多。所以多线程需要技术去调试和管理。爬虫使用多线程的目的性就是为了提高抓取的数据效率,如果有些网站对访问速度有限制,就可以采用多线程,每个线程使用爬虫代理IP采集数据。 python爬虫支持多线程数据采集,为了实现python爬虫多线程,可以采用一下方案思路: 在采集的目标网站中下载页面,然后在已下载的页面中更新出新的网址,依次类推,就相当于在python爬虫使用多线程来处理网络请求,使用爬虫代理获取API连接中的API连接里面数据,然后将返回的数据结果保存,其它线程在分析这个数据,最后储存在文件中。 多线程代码参考: #! -*- encoding:utf-8 -*- import aiohttp, asyncio targetUrl = "http://httpbin.org/ip" # 代理服务器(产品官网 www.16yun.cn) proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理验证信息 proxyUser = "username" proxyPass = "password" proxyServer = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host" : proxyHost, "port" : proxyPort, "user" : proxyUser, "pass" : proxyPass, } userAgent = "Chrome/83.0.4103.61" async def entry(): conn = aiohttp.TCPConnector(verify_ssl=False) async with aiohttp.ClientSession(headers={"User-Agent": userAgent}, connector=conn) as session: async with session.get(targetUrl, proxy=proxyServer) as resp: body = await resp.read() print(resp.status) print(body) loop = asyncio.get_event_loop() loop.run_until_complete(entry()) loop.run_forever()