scrapy 爬虫之简单使用
程序员文章站
2022-05-30 20:09:47
...
安装好了scrapy爬虫框架后(安装步骤见上一篇博客),开始简单的使用。
1、scrapy 命令行工具的使用
scrapy的一个强大之处是命令行工具,在命令行下输入:
scrapy -h
如图:
常用的命令行工具有:crawl 启动爬虫,list 列出当前项目下的所有爬虫,shell 进入爬虫命令行,startproject 新建爬虫项目。
2、scrapy 新建爬虫项目
使用命令行,输入scrapy startproject exam1,结果如下图:
进入到exam1目录,生成的目录结构如下图:
1)、其中scrapy.cfg,为爬虫部署文件,需配合scrapyd一起使用。
2)、items.py 为数据结构定义文件,定义结构化的数据模板,相当于django 里的models
3)、middlewares.py 为中间件文件,可自定义下载、存储等中间件,是scrapy扩展性强大的体现之一
4)、pipelines.py 为数据处理文件,如数据过滤、持久化处理等。
5)、settings.py 爬虫配置文件,可设置的项很多,如代理、爬取速度、数量、日志、编码等。
3、爬虫代码的编写
spiders子目录是编写爬虫代码要用到的目录,所有的爬虫代码都写在此子目录下。在spiders目录下新建BaiDuSpider.py文件,来简单的爬取百度的主页。现在目录结构如下:
在BaiDuSpider.py中输入以下代码:
import scrapy
class BaiDu_Spider(scrapy.Spider):
"""docstring for SpiderJSscrapy.Spider"
"""
# spider 的name,每个新建的spider都必须有一个name,此变量是唯一需要定位的实例属性,
name = "spiderBD"
# 允许爬取的域名,若为空则表示爬取所有网址,无限制
allowed_domains = ["www.baidu.com"]
# 起始url,爬取的起始点,爬虫开始爬取的入口
start_urls = ["http://www.baidu.com"]
# 构造函数
def __init__(self, *arg, **args):
super(BaiDu_Spider, self).__init__()
# 爬取方法
def parse(self, response):
self.logger.info(f"response is:{response.text}")
4、测试爬虫
在命令行中测试上图编写的简单访问百度首页的爬虫代码。打开命令行输入以下命令:
scrapy crawl spiderBD
可以看到以下输出:
可以看到已经爬取到了百度首页的html内容。前面的过程只是简单的体验了一下scrapy爬虫爬取网页的过程。涉及到的DOM元素定位、中间件的使用、User-Agent的设置、数据统一化、持久化等内容后面进一步讲解。