Python爬虫Scrapy基本使用超详细教程
1. Scrapy的安装
安装Scrapy需要满足以下条件:
- Python 3.5+
- Twisted(Scrapy的依赖项之一)
安装方法如下:
pip install scrapy
2. 创建Scrapy项目
在命令行中执行以下命令:
scrapy startproject <project_name>
其中,<project_name>
为你的项目名称。
创建完毕后,项目结构如下:
<project_name>/
scrapy.cfg
<project_name>/
__init__.py
items.py
middlewares.py
pipelines.py
settings.py
spiders/
__init__.py
其中,scrapy.cfg
是项目的配置文件,<project_name>
是项目的包,items.py
是数据项,middlewares.py
是中间件,pipelines.py
是管道,settings.py
是Scrapy的设置文件,spiders
文件夹是爬虫文件夹。
3. 编写爬虫
在spiders
文件夹中创建一个Python文件,例如example_spider.py
,编写以下代码:
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com']
def parse(self, response):
# 在这里编写解析代码
pass
其中,
name
是爬虫的名称。allowed_domains
是爬虫访问的域名列表。start_urls
是爬虫开始访问的URL列表。parse
是解析响应并返回Item的方法。
4. 解析HTML
Scrapy提供了方便的XPath和CSS选择器来解析HTML,以下是使用XPath的例子:
def parse(self, response):
title = response.xpath('//title/text()').get()
yield {'title': title}
以上代码可以提取页面中的标题。
以下是使用CSS选择器的例子:
def parse(self, response):
title = response.css('title::text').get()
yield {'title': title}
5. 提取Item
Item是抓取数据的容器,使用方法与字典类似。
在items.py
中声明Item类:
import scrapy
class ExampleItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
在爬虫中使用Item:
def parse(self, response):
for item in response.xpath('/html/body/a'):
title = item.xpath('@title').get()
link = item.xpath('@href').get()
yield ExampleItem(title=title, link=link)
以上代码可以提取页面中的a标签的标题和链接,并生成ExampleItem对象。
6. 存储数据
Scrapy提供了多种方式存储数据,例如在终端中输出、保存到JSON文件、写入MySQL数据库等,以下是保存到JSON文件的例子:
在settings.py
中添加以下内容:
FEED_FORMAT = 'json'
FEED_URI = 'output.json'
以上代码表示将数据保存为JSON格式,并保存在output.json
文件中。
在管道pipelines.py
中添加以下内容:
import json
class JsonWriterPipeline(object):
def open_spider(self, spider):
self.file = open('output.json', 'w')
def close_spider(self, spider):
self.file.close()
def process_item(self, item, spider):
line = json.dumps(dict(item)) + "\n"
self.file.write(line)
return item
以上代码表示将Item以JSON格式写入output.json
文件中。
在settings.py
中添加以下内容:
ITEM_PIPELINES = {
'myproject.pipelines.JsonWriterPipeline': 300,
}
以上代码表示将Item使用JsonWriterPipeline
管道处理(数字表示处理优先级,数字越小越优先)。
7. 运行爬虫
在命令行中执行以下命令:
scrapy crawl example
其中,example
是你的爬虫名称。执行成功后,数据会保存在output.json
文件中。
在此基础上,可以探索更多Scrapy的功能和细节,例如:使用中间件控制请求流程、使用代理IP、使用Selenium模拟浏览器等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬虫scrapy基本使用超详细教程 - Python技术站