4 Scrapy框架的安装
什么是Scrapy框架
Scrapy是一个python爬虫框架,非常适合做一些大型的爬虫项目,并且开发者利用这个框架,不用过多的关注细节,我们重点说这个框架
Scrapy的官网地址是:http:scrapy.org/
安装Scrapy框架即各种常见错误解决技巧
少坑版安装方式
由于Scrapy涉及太多的依赖库,再次,如果想省事的朋友可以采用这种方式来安装。
如果想了解具体过程的朋友,可以先安装 pip install scrapy 然后遇到错误按照后面的方式解决。
接下来介绍少坑版安装方式
0开个vpn或者采用本地安装方式
1首先,升级pip python -m pip install --upgrade pip
2安装visual studio 2015专业版 去http://download.microsoft.com/download/B/8/9/B898E46E-CBAE-4045-A8E2-2D33DD36F3C4/vs2015.pro_chs.iso下载
3安装lxml 去http://www.lfd.uci.edu/~gohlke/pythonlibs/ 找"lxml-" pip install wheel、pip install lxml-4.3.3-cp37-cp37m-win_amd64.whl(可能需要:pip install Twisted-18.9.0-cp37-cp37m-win_amd64.whl)
4pip install scrapy 或者pip install scrapy==1.1.0rc3
常见错误与解决
我的操作:
1升级pip python -m pip install --upgrade pip
2pip install scrapy
没有visual studio 或者visual studio 版本不够高,所以我安装了一下visual studio 2015专业版。然后很顺利的进行了,然后倒在了判断scrapy 安装成功上面。
遇到问题:Fatal error in launcher:
解决方法:Fatal error in launcher: Unable to create process using ‘"’–解决scrapy创建项目时报错
运行代码:
python3 -m scrapy startproject weisuen
成功了!!!
如何判断scrapy 安装成功?
scrapy startproject weisuen
作业
作业:把scrapy安装好,然后将成功截图通过http://task.iqianyue.com提交给老师。
先声明一下,办公室用的是台式机,寝室用的是笔记本电脑,目前两台电脑都安装scrapy成功,但是台式机前面需要加上python3 -m,我记录了台式机的失败案例以及相应的处理方法,并将笔记本的成功案例展现出来。
Scrapy框架实践
1 Scrapy框架常见命令实战
这部分先介绍一下命令的作用,不求甚解,之后第一个爬虫项目的时候就需要理解了,先学习了解下命令。
打开cmd,然后输入scrapy -h(查看当前scrapy有哪些命令)
笔记本是ok的,不需要改编代码。
台式机失败了,改变代码,python3 -m scrapy -h
,ok。
bench Run quick benchmark test(测试命令)
fetch Fetch a URL using the Scrapy downloader(爬一个网页)
genspider Generate new spider using pre-defined templates
runspider Run a self-contained spider (without creating a project)(运行一个爬虫)
settings Get settings values
shell Interactive scraping console
startproject Create new project
version Print Scrapy version
view Open URL in browser, as seen by Scrapy
scrapy包括全局命令(任何地方也可以使用)和项目命令(项目内可以使用)
上图中展开的是全局命令,接下来一一解释:
fetch命令 (爬一个网页) 查看对应网站爬取的过程
不用依赖爬虫项目,就可以爬一个网页,而且可以显示爬虫的过程
scrapy命令使用方式:scrapy 命令名 参数
比如说scrapy fetch -h(查看fetch的命令相关使用方式,遇到不懂的命令可以这样查找使用方式)
台式机:由于我下载了两种python,为了避免错误,我需要在代码前面加上python3 -m,之后不再重复介绍,
scrapy fetch -h #笔记本
python3 -m scrapy fetch -h #台式机
我们可以查看以下参数,比如说
–spider=SPIDER 我们可以使用这个参数指定spider(爬虫)
–headers 我们可以使用这个参数指定headers
–nolog 在爬的时候会出现很多的中间日志信息,不想显示日志信息可以加上这个参数。
例:爬取一个页面
scrapy fetch https://www.baidu.com/ #笔记本
python3 -m scrapy fetch https://www.baidu.com/ #台式机
笔记本上面成功了,
台式机出现错误:ModuleNotFoundError: No module named ‘win32api’
处理:安装pywin32
下载https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/pywin32-221.win-amd64-py3.7.exe
下载安装后再在命令控制台输入python3 -m scrapy crawl demo 台式机的错误暂未解决
我最后重新安装了一次scrapy 安装在Anaconda3文件下,
这次和笔记本一样,不需要python3 -m了 也成功创建爬虫项目和爬去文件了
我又贼心不死地取重新安装在python37文件夹下,然而和以前一样,需要python3 -m .没弄懂这个现象原理,这个问题暂时解决不了,继续学习,之后回来再看。
不出现日志信息的爬取代码,如下:
scrapy fetch https://www.baidu.com/ --nolog
展示一下有没有nolog的区别,作用就是减少日志信息。
scrapy fetch https://www.hellobi.com
总感觉有了查看源代码的效果,视频里面没有这么说,先继续把
第二个命令 runspider命令 (运行一个爬虫)
不依托爬虫项目,运行一个爬虫
scrapy runspider first.py
运行出错,应该进入爬虫文件的目录
运行成功,注意 Spider是大写,否则运行出错
from scrapy.spiders import Spider
class FirstSpider(Spider):
#建立一个爬虫文件first
import scrapy
from scrapy.spiders import Spider #导入scrapy里面spiders的spider
class FirstSpider(Spider):#创建一个爬虫类 爬虫名+spider
name="first"#爬虫文件里面的属性,设置爬虫的名字
allowed_domains=["baidu.com"]#允许的域名
start_urls=["http://www.baidu.com",]#起始的地址
def parse(self,response):#回调方法 运行的时候会运行这个
pass #pass 不执行 就是占个位置
爬虫项目和爬虫文件的关系
一个系统里面有多个爬虫项目,一个爬虫项目包括多个爬虫文件。
scrapy框架主要是做爬虫项目的
之前学的urllib主要是爬虫文件。
shell命令:爬去一个网站,进入交互终端,进行相应的测试
shell命令可以打开scrapy的交互终端,在开发和调试的时候用到,不启动scrapy爬虫的条件下对网站进行调试,也可以在交互终端里面写一些python测试,可以用在测试的时候。
scrapy shell https://www.baidu.com/ --nolog
交互终端形态:
in[1]这里可以输入python代码,也可以输入Scrapy代码,exit()退出交互终端
startproject命令:直接创建某一个爬虫项目
scrapy startproject -h
scrapy startproject first
project_name:爬虫项目名
version命令:查看对应的版本信息
scrapy version
view命令:下载某个网页并用浏览器查看
scrapy view http://news.163.com --nolog
成功了,不过由于没有默认浏览器,所以我点了浏览器打开了
settings命令:看一些配置信息
上面全局命令讲完了,接下来将项目命令
scrapy -h
查看所有项目命令,包括全局和项目命令
bench Run quick benchmark test
check Check spider contracts
crawl Run a spider
edit Edit spider
fetch Fetch a URL using the Scrapy downloader
genspider Generate new spider using pre-defined templates
list List available spiders
parse Parse URL (using its spider) and print the results
runspider Run a self-contained spider (without creating a project)
settings Get settings values
shell Interactive scraping console
startproject Create new project
version Print Scrapy version
view Open URL in browser, as seen by Scrapy
bench命令:测试本地硬件的性能,使用该命令时,我们会创建一个本地服务器,并且以最大的速率去爬取网页,为了避免网速其他的影响,所以只爬取网址,不爬取内容
进first项目:cd .\first
scrapy bench
每分钟爬取多少个网页
genspider命令:创建爬虫项目之后时没有爬虫的,这个命令可以创建爬虫项目里面的爬虫
初始状态
scrapy genspider -l
https://www.baidu.com/baidu.com 域名
https协议名
www主机名
爬取名为weisuen域名为baidu.com的爬虫文件
scrapy genspider -t basic weisuen baidu.com
check命令:测试命令
scrapy check weisuen
crawl命令:运行爬虫(出现最多)
scrapy crawl weisuen
list命令:展示当前可以使用的爬虫文件
scrapy list
edit命令:windows里面无法运行,linux可以运行,直接通过编辑器打开爬虫文件
scrapy edit weisuen
parse命令:获取指令url网址,进行相应的处理分析。
scrapy parse https://www.baidu.com/ --nolog
这部分重点掌握startproject创建爬虫项目和craw运行爬虫
2第一个Scrapy爬虫
Xpath表达式(运行效率比正则表达式快)
/标签 从顶端开始寻找某个标签
text() 可以提取对应的标签文本内容
@ 可以提取对应的标签属性值内容
// 寻找所有的标签
//标签[@属性=值]
//li[@class="hidden-xs"]/a/@href
<a href="ssss">jsjhhu</a>
<标签 属性="属性值">文本信息</标签>
eg:/html 从顶端开始寻找某个html
/html/head/title/text()
pycharm的安装
建议安装专业版,不过我已经安装过了,是社区版。专业版的解锁可以进入cmd 设置data=2999.12.1 然后进入专业版使用30天 然后把data 转回现在的时间 。或者在网上找别的注册码也行。
pycharm有利于项目的管理
首先设置 items文件,设置我们爬取的目标
然后设置pipeline文件,设置后续的处理
然后设置settings,设置对应的配置信息
最后编写爬虫spiders
查看xpath的方法 按F12,打开Elements标签 找要爬的东西 然后右键 cope/cope xpath
scrapy crawl weisuen
成功了