专业图书商城网站建设,网站未经授权推广别人的产品,公众号seo排名,大兴专注高端网站建设#x1f6e0;️ Scrapy 框架基本使用
Scrapy 是一个强大的 Python 爬虫框架#xff0c;提供了用于提取和处理网页数据的功能。以下是 Scrapy 的基本使用步骤#xff1a;
安装 Scrapy
pip install scrapy创建 Scrapy 项目
scrapy startproject myproject这将生成一个基础…️ Scrapy 框架基本使用
Scrapy 是一个强大的 Python 爬虫框架提供了用于提取和处理网页数据的功能。以下是 Scrapy 的基本使用步骤
安装 Scrapy
pip install scrapy创建 Scrapy 项目
scrapy startproject myproject这将生成一个基础的 Scrapy 项目结构包括 settings.py、spiders、items.py 等文件夹和文件。 ️ Scrapy 框架结构识别
Scrapy 项目通常包含以下几个重要组件
spiders: 存放爬虫代码的文件夹每个爬虫文件定义了如何抓取特定网站的数据。items.py: 用于定义要抓取的数据结构。pipelines.py: 处理抓取到的数据比如清洗、存储等。settings.py: Scrapy 的配置文件用于设置框架的各种参数。middlewares.py: 用于定义 Scrapy 中间件处理请求和响应。 多种形式项目创建
除了使用 scrapy startproject 命令创建项目外你还可以使用命令创建爬虫
scrapy genspider myspider example.com这将生成一个名为 myspider 的爬虫文件负责抓取 example.com 网站的数据。 Scrapy Fetch 模式
Scrapy 提供了多种数据抓取方式包括
Fetch Requests: 直接抓取请求使用 Scrapy shell 进行快速测试。
scrapy shell http://example.comScrapy Crawl: 使用已定义的爬虫抓取数据。
scrapy crawl myspiderScrapy 常用指令集合
以下是一些常用的 Scrapy 命令
创建项目: scrapy startproject projectname生成爬虫: scrapy genspider spidername domain.com启动爬虫: scrapy crawl spidername运行爬虫并保存数据: scrapy crawl spidername -o output.json调试: scrapy shell http://example.com ️ Scrapy 配置文件解读
settings.py 是 Scrapy 的核心配置文件包含了框架的各种设置比如
USER_AGENT: 设置爬虫的用户代理。
USER_AGENT myproject (http://www.myproject.com)DOWNLOAD_DELAY: 设置下载延迟。
DOWNLOAD_DELAY 2ITEM_PIPELINES: 启用或禁用管道。
ITEM_PIPELINES {myproject.pipelines.MyPipeline: 1,
}Scrapy 管道学习
管道Pipelines是 Scrapy 处理抓取数据的重要组成部分。以下是一个简单的管道示例它将数据保存到 JSON 文件中
pipelines.py:
import jsonclass JsonWriterPipeline:def __init__(self):self.file open(items.json, w)self.exporter json.JSONEncoder()def process_item(self, item, spider):line self.exporter.encode(item) \nself.file.write(line)return itemdef close_spider(self, spider):self.file.close()在 settings.py 中启用管道
ITEM_PIPELINES {myproject.pipelines.JsonWriterPipeline: 1,
}Scrapy 表单处理
Scrapy 支持处理表单提交例如登录操作。以下是一个示例展示如何使用 Scrapy 提交表单
import scrapyclass FormSpider(scrapy.Spider):name form_spiderstart_urls [http://example.com/login]def parse(self, response):yield scrapy.FormRequest.from_response(response,formdata{username: user, password: pass},callbackself.after_login)def after_login(self, response):# 检查登录是否成功if Welcome in response.text:self.logger.info(Login successful!)else:self.logger.info(Login failed.)Scrapy 功能学习 Selector 数据处理
Scrapy 使用 Selector 来提取数据。常用选择器包括
XPath 选择器:
response.xpath(//title/text()).get()CSS 选择器:
response.css(title::text).get()正则表达式选择器:
import re
response.text.find(r\bExample\b)️ Scrapy 对接 MySQL
将数据存储到 MySQL 数据库的示例
pipelines.py:
import mysql.connectorclass MySQLPipeline:def open_spider(self, spider):self.conn mysql.connector.connect(hostlocalhost,userroot,passwordpassword,databasescrapy_db)self.cursor self.conn.cursor()def process_item(self, item, spider):self.cursor.execute(INSERT INTO my_table (field1, field2) VALUES (%s, %s),(item[field1], item[field2]))self.conn.commit()return itemdef close_spider(self, spider):self.cursor.close()self.conn.close()在 settings.py 中启用管道
ITEM_PIPELINES {myproject.pipelines.MySQLPipeline: 1,
}️ Scrapy 对接 MongoDB
将数据存储到 MongoDB 的示例
pipelines.py:
import pymongoclass MongoDBPipeline:def open_spider(self, spider):self.client pymongo.MongoClient(localhost, 27017)self.db self.client[scrapy_db]self.collection self.db[my_collection]def process_item(self, item, spider):self.collection.insert_one(dict(item))return itemdef close_spider(self, spider):self.client.close()在 settings.py 中启用管道
ITEM_PIPELINES {myproject.pipelines.MongoDBPipeline: 1,
}Scrapy 文件存储
将数据存储为文件如 CSV、JSON的示例
import csvclass CsvWriterPipeline:def __init__(self):self.file open(items.csv, w, newline, encodingutf-8)self.writer csv.writer(self.file)self.writer.writerow([field1, field2])def process_item(self, item, spider):self.writer.writerow([item[field1], item[field2]])return itemdef close_spider(self, spider):self.file.close()在 settings.py 中启用管道
ITEM_PIPELINES {myproject.pipelines.CsvWriterPipeline: 1,
}以上内容展示了如何使用 Scrapy 框架进行数据抓取、处理和存储希望对你进行 Python 爬虫开发有所帮助。