一、Scrapy常见命令提示符CMD命令:
(1)scrapy -h 查看指令帮助。
(2)scrapy fetch http://baidu.com 直接爬取特定网页。
(3)scrapy runspider scrapytest.py 运行特定爬虫(前提要使用cd .\XXX进入文件所在目录)。
(4)scrapy shell http://www.baidu.com --nolog 进入Python的Shell模式:(>>> exit()可以退出)。
(5)scrapy startproject firstScrapy 新建爬虫项目((前提要使用cd .\XXX进入项目所在目录)) 。
(6)scrapy version 查看scrapy版本。
(7)scrapy view http://news.163.com 下载某个网页并用浏览器查看
(8)scrapy settings scrapy设置。
进入一个爬虫项目后:(cd .\项目文件夹)
(1)scrapy bench 测试程序。
(2)scrapy genspider -l 查看当前项目中有哪些爬虫模板basic基础模板 crawl自动爬虫模板 csvfeed处理CSV xmlfeed处理XML。
(3)scrapy genspider -t basic ZYH baidu.com 创建爬虫文件,限制只能爬百度。
(4)scrapy check ZYH 测试爬虫。
(5)scrapy crawl 运行爬虫。
(6)scrapy list 查看当前项目下可以使用的爬虫文件。
(7)scrapy edit ZYH 调用编辑器编辑爬虫文件。
(8)scrapy parse http://www.baidu.com 获取指定URL网址,并且进行处理和分析。
二、Scrapy项目文件介绍:
(1)__init__.py 初始化文件。
(2)items.py 目标文件,设定爬取内容。
(3)pipelines.py 数据的后续处理文件。
(4)settings.py 爬虫设置,如代理服务器,伪装浏览器,开启关闭cookies,怎样开启pipeline等。
(5)spiders:爬虫文件夹。
三、Scrapy测试代码:
from scrapy.spiders import Spider
class FirstSpider():
name="first"
allowed_domains=["baidu.com"] #允许爬的地址
start_urls=["http://www.baidu.com",] #起始域名
def parse(self,response):
pass #pass:不执行任何事情,只是占位符
四、爬虫运行常见错误:
1、出现了403的错误,如下所示:
DEBUG:Crawled(403)<GET XXXXX网址> (referer: None)
原因是代理被禁止访问,解决方法是在settings.py配置文件里修改不设置代理:
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
}
2、出现了Forbidden by robots.txt的错误,如下:
[scrapy] DEBUG: Forbidden by robots.txt: <GET XXXX网址>
原因是scrapy是遵守robot协议的,在访问网址前会先访问robot.txt来查看自己是否有权限访问。如果网站不允许被爬,就不能访问。
解决方法,在settings.py配置文件里设置不遵守robot协议:
ROBOTSTXT_OBEY = False
3、为了启用一个Item Pipeline组件,你必须将它的类添加到 ITEM_PIPELINES 配置,在settings.py配置文件里修改:
ITEM_PIPELINES = {
'tutorial.pipelines.TutorialPipeline': 300,
}