基于 asyncio,aiohttp,uvloop 的爬虫框架

网友投稿 781 2022-10-21

基于 asyncio,aiohttp,uvloop 的爬虫框架

基于 asyncio,aiohttp,uvloop 的爬虫框架

flySpider

基于 asyncio,aiohttp,uvloop 的爬虫框架

运行环境

python3

Description

提供初始url 和每一级别url的解析方法以及爬取字段的处理函数即可开始的高效爬虫框架,并了封装好的异步mysql库和避免爬取过快导致本机ip被封的内外的免费代理

Usage

from engine.Engine import V1Enginefrom item.item import Itemfrom selector.selector import Xpathfrom parse.new_parse import BaseParser, XPathParser, ReParserfrom config import *if __name__ == '__main__': urls = ['https://itunes.apple.com/cn/genre/ios/id36?mt=8'] #urls 是初始urls数组 class urlItem(Item): title = Xpath("//h1/text()[2]") async def detail(self, aiomysql_heaper): sql = "insert into xxx (title) VALUES (%s)" params = (self.title,) # aiomysql_heaper.insert_into(sql, params) print("title is {}".format(self.title)) 目前有xpath 和re 解析器 如有其它需求可以直接继承BaseParser 自己封装 class parse1(XPathParser): level = 1 parseRule = "//div[@class='grid3-column']//ul//li/a/@href" headers = normal class parse2(XPathParser): level = 2 parseRule = "//div[@id='selectedcontent']//li/a/@href" headers = normal class parse3(BaseParser): level = 3 headers = normal item = urlItem parses = [parse1, parse2, parse3] myEngine = V1Engine(urls, parses) myEngine.run()

Seed

url 种子 维护了url trytimes(重试次数) level(url深度) data_type(html 或者 图片) 如有其它需求 可自己修改

config

"""mysql 配置"""

HOST = ''

DATABASE = ''

PORT = 3306

USER = ''

PASSWORD = ''

CHARSET = 'utf8'

"""url queue 最大长度"""

URL_QUEUE_MAX_LENGTH = 0

"""url retry times"""

MAXTRY = 10

"""代理池最小值, 小于这个值重新爬取"""

MIN_PROXY_COUNT = 5

"""是否使用布隆过滤器"""

IS_USE_BLOOM = False

"""协程数"""

MAX_TASKS = 100

"""是否使用代理"""

IS_USE_PROXY = False

"""控制代理爬取时间"""

CRAWL_PROXY_TIME = 10

"""0 表示国内,1表示国外,用国外代理要保证服务器能翻墙"""

PROXY_TYPE = 1

"""用于验证代理有效性的网站"""

PROXY_VERIFICATION_URL = 'http://baidu.com'

#PROXY_VERIFICATION_URL = 'https://apple.com/shop/bag'

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:「无服务器架构」无服务器架构是应用程序的正确选择?考虑利弊
下一篇:消息队列概述
相关文章

 发表评论

暂时没有评论,来抢沙发吧~