爬虫项目笔记
1. 爬虫基础
1.1 爬虫概述
爬虫是一种能够自动化获取网页内容的程序。
1.2 数据存储
数据可以存储在多种格式和数据库中,如 CSV 文件、MySQL、MongoDB 以及文件存储等。
2. Scrapy 框架
2.1 Scrapy 组件
- 调度器:负责管理待爬取的 URL 队列。
- 爬虫:主要用于提取数据并生成新的请求。
- 引擎:起到协调爬虫、调度器和下载器的作用。
- 下载器:负责获取网页内容。
- 管道:用于处理和存储爬取的数据。
2.2 Scrapy 项目结构
项目目录通常包含多个模块,如calipao
、meinvpian
、tupianzhijia
等。每个模块都包含爬虫、管道、设置文件等。
2.3 Scrapy 管道配置
ITEM_PIPELINES = {'tupianzhijia.pipelines.TupianzhijiaPipeline': 300,'tupianzhijia.pipelines.MeinvSavePipeline': 301,
}
IMAGES_STORE = "./meinvtupian"
2.4 Scrapy 管道实现
- TupianzhijiaPipeline
class TupianzhijiaPipeline:def process_item(self, item, spider):# 具体的数据存储逻辑return item
- MeinvSavePipeline(继承自 ImagesPipeline)
class MeinvSavePipeline(ImagesPipeline):def get_media_requests(self, item, info):yield scrapy.Request(item['img_src'])def file_path(self, request, response=None, info=None):file_name = request.url.split("/")[-1]return f"img/{file_name}"def item_completed(self, results, item, info):print(results)
2.5 Scrapy 爬虫示例
def parse(self, resp, **kwargs):li_list = resp.xpath("//ul[@class='list_con_box_ul']/li")for li in li_list:href = li.xpath("./a/@href").extract_first()yield scrapy.Request(url=resp.urljoin(href),method='get',callback=self.parse_detail)def parse_detail(self, resp, **kwargs):name = resp.xpath("//*[@id='container']/div/div/div[2]/h1/text()").extract_first()img_src = resp.xpath("//div[@id='bigpic']/a/img/@src").extract_first()print(name, img_src)
3. PC 文件管理系统
3.1 功能概述
- 返回上一级:实现导航到上一级目录的功能。
- 文件类型:根据文件后缀对文件进行分类。
- 功能:包括删除、移动等操作。
- 选择:支持全选、全不选以及反选。
3.2 界面示例
界面包含欢迎信息和选择文件夹的提示,同时提供存储数据的方案选择。
4. 其他
4.1 数据提取示例
trs = resp.xpath("//tbody[@id='tdata']/tr")
for tr in trs:if tr.xpath("./@class").extract_first() == 'tdbck':continuered_ball = tr.css(".chartBall01::text").extract_first()blue_ball = tr.css(".chartBall02::text").extract_first()qihao = tr.xpath("./td[1]/text()").extract_first().strip()print(qihao)
4.2 文件夹管理
以上笔记详细介绍了爬虫项目的各个方面,包括基础概念、Scrapy 框架的使用、PC 文件管理系统的功能以及相关代码示例等。