asyncio+aiohttp(实现异步请求)爬虫,去重(在爬取的过程中有些url已经爬取了,就不需要再爬取), 入库(使用异步的方式,pymysql已经不适用了,aiomysql)
# asyncio爬虫,去重(在爬取的过程中有些url已经爬取了,就不需要再爬取, 入库(使用异步的方式,pymysql已经不适用了,aiomysql)
import asyncio
import re
import time
import aiohttp
import aiomysql
from pyquery import PyQuery
stopping = False
start_url = 'https://cuiqingcai.com/'
waiting_urls = []
seen_urls = set()
async def article_handler(url, session, pool):
'''
function:提取页面title的信息,且将页面中出现的url地址加入waiting_url列表中
:param url:
:param session:
:param pool:
:return:
'''
print('start get url: {}'.format(url))
# 获取文章详情,并解析入库
html = await fetch(url, session)
# 最终要提取的url地址,添加到seen_urls列表中
seen_urls.add(url)
# extract_urls提取出页面中所有的url,解析是