通过上一节《Python Scrapy爬虫框架详解》的学习,您已经对 Scrapy 框架有了一个初步的认识,比如它的组件构成,配置文件,以及工作流程。本节将通过一个的简单爬虫项目对 Scrapy 框架做进一步介绍。
首先看一个简单的示例,比如把 python教程入门学习公众号首页的“title”抓取下来,如下所示:
<html lang="zh-cn">
<head>
<meta charset="gb2312" />
<meta name="baidu-site-verification" content="6B13HRSfYA" />
<link rel="shortcut icon" href="/cpp/favicon.ico" />
<title>python教程入门学习:python教程入门学习公众号(入门教程、编程软件)</title>
....
</head>
创建项目
在 CMD 命令行执行以下命令创建项目以及爬虫文件:
# 创建项目
1) scrapy startproject Title
# 进入项目
2) cd Title
# 创建爬虫文件
3)scrapy genspider title c.biancheng.net
编写代码
打开爬虫文件 title.py ,编写如下代码,其中一些代码 Scrapy 框架已经自动生成:
- 编写爬虫文件
import scrapy
class TitleSpider(scrapy.Spider):
name = 'title'
#要抓取数据的网站域名
allowed_domains = ['c.biancheng.net']
#第一个抓取的url,初始url,被当做队列来处理
start_urls = ['http://c.biancheng.net/']
def parse(self,response):
#.extract():提取文本内容,将列表中所有元素序列化为Unicode字符串
#.extract_first():提取列表中第1个文本内容
# 以下是我们自己编写的代码,而自动生成的代码不用改动
result = response.xpath('/html/head/title/text()').extract_first()
print('-' * 60 )
print(result)
print('-' * 60)
- 修改配置文件
下面修改 settings 文件的配置项,如下所示:
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'
ROBOTSTXT_OBEY = False
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}
- 使用Pycharm IDE运行项目
为了省去终端敲命令的环节,您可以在项目中自定义一个运行文件 mian.py(注意:该文件与 scrapy.cfg 同目录),并编写如下代码:
from scrapy import cmdline
# 注意,cmdline.execute()是为了减少输入命令的操作,该方法的参数必须为列表。
# 执行爬虫文件来启动项目
cmdline.execute('scrapy crawl title'.split())
编写完成后,执行 main.py 文件,您会看到很多的输出内容,内容大致如下:
# scrapy 框架运行时输出的日志&