# 持续更新中...
#### 更新日志
- 2023-12-25 爬虫支持并发
- 2023-12-26 优化代码,修复BUG
- 2024-01-05 解析数据改为使用parsel库
- 2024-01-16 更新spiders包
# 项目说明
- 轻量框架,支持中间件、检验等功能。用法与Scrapy、Feapder类似。
# Python解释器
- python3.10+
# 如何使用pader?
#### 使用WeakSpider
```python
from loguru import logger
import pader
class TestSpider(pader.WeakSpider):
start_urls = ['https://www.baidu.com']
def when_spider_start(self):
print('爬虫开始了...')
def when_spider_close(self):
print('...爬虫结束了')
def parse(self, request, response):
lis = response.xpath('//ul[@id="hotsearch-content-wrapper"]/li')
for li in lis:
url = li.xpath('./a/@href').get()
title = li.xpath('./a/span[last()]/text()').get()
logger.success(title)
logger.success(url)
logger.info('\r')
yield pader.Request(url, callback=self.parse_detail)
def parse_detail(self, request, response):
nodes = response.xpath('//div[@class="c-container"]//h3')
for node in nodes:
some = node.xpath('./a//text()').getall()
title = ''.join(some)
url = node.xpath('./a/@href').get()
logger.success(title)
logger.success(url)
def middleware(self, request):
request.mark = '百度首页' if request.callback.__name__ == 'parse' else '百度搜索页'
logger.info('进入了中间件,已设置记号为{}'.format(request.mark))
def validate(self, request, response):
logger.warning('进入了校验,记号={}'.format(request.mark))
if __name__ == '__main__':
TestSpider().run()
```
#### 使用QueueSpider
```python
import threading
import time
from loguru import logger
import pader
def t_name():
return threading.current_thread().name
def show(request):
logger.success("回调: {} => 线程: {}".format(request.callback.__name__, t_name()))
URL = "https://www.baidu.com/s?&wd=python3"
class TestSpider(pader.QueueSpider):
def start_requests(self):
for i in range(5):
yield pader.Request(URL)
def when_spider_start(self):
logger.info('爬虫开始了...')
def when_spider_close(self):
logger.info('...爬虫结束了')
def parse(self, request, response):
show(request)
for i in range(2):
mark = 'parse-{}'.format(i + 1)
yield pader.Request(URL, mark=mark, callback=self.parse_list)
def parse_list(self, request, response):
show(request)
for i in range(3):
mark = 'parse_list-{}'.format(i + 1)
yield pader.Request(URL, mark=mark, callback=self.parse_detail)
def parse_detail(self, request, response):
show(request)
def middleware(self, request):
time.sleep(1) # 睡眠1S方便看出并发效果
if __name__ == '__main__':
TestSpider(speed=5, qsize=10).run()
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
资源推荐
资源详情
资源评论
收起资源包目录
手写自己的爬虫框架.zip (11个子文件)
SJT-code
__init__.py 91B
core
__init__.py 160B
response.py 514B
request.py 3KB
spiders
__init__.py 135B
base_spider.py 884B
queue_spider.py 3KB
weak_spider.py 936B
exceptions.py 353B
.gitignore 27B
README.md 3KB
共 11 条
- 1
资源评论
JJJ69
- 粉丝: 6374
- 资源: 5917
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ssm学院党员管理系统+jsp.zip
- ssm学生信息管理系统+jsp.zip
- ssm学校运动会信息管理系统+jsp.zip
- ssm学生宿舍管理+jsp.zip
- ssm学生公寓管理中心系统的设计与实现+jsp.zip
- ssm学生请假系统+jsp.zip
- ssm学生公寓管理系统的设计与实现+jsp.zip
- ssm学生成绩管理系统+vue.zip
- 西门子s7 200smart与3台力士乐变频器通讯程序 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等 程序采用轮询,可以后续根据要求适当修改后扩展 器件
- ssm削面快餐店点餐服务系统的设计与实现+jsp.zip
- ssm新生报到系统+jsp.zip
- ssm选课排课系统的设计与开发+vue.zip
- ssm星空游戏购买下载平台的设计与实现+jsp.zip
- ssm校园一卡通系统软件的设计与实现+jsp.zip
- ssm校园自助洗衣系统的分析与设计+jsp.zip
- ssm校园资讯推荐系统+jsp.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功