Python用Scrapy爬虫入门案例
安装Anaconda详细介绍
下载
如果日常工作或学习并不必要使用1,000多个库,那么可以考虑安装Miniconda(图形界面下载及命令行安装请戳),这里不过多介绍Miniconda的安装及使用。
Anaconda
Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。
② conda
conda是包及其依赖项和环境的管理工具。
适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
适用平台:Windows, macOS, Linux
用途:
快速安装、运行和升级包及其依赖项。
在计算机中便捷地创建、保存、加载和切换环境。
如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。——conda官方网站
conda为Python项目而创造,但可适用于上述的多种语言。
conda包和环境管理器包含于Anaconda的所有版本当中。
在Pycharm中创建scrapy项目
你可以选择不同版本的python version,就是你可以为3.7设置一个解释器,为2.7设置一个解释器。
当你要编写2.7版本python的程序时,即插即用设置成2.7版本的解释器就ok。
如果要编写3.7版本python的程序时,即插即用设置成3.7版本的解释器就ok。
安装scrapy
conda install scrapy
初始化项目
You can start your first spider with:
cd app
scrapy genspider example example.com
settings.py
打开文件settings.py
BOT_NAME:项目名
USER_AGENT:默认是注释的,这个东西非常重要,如果不写很容易被判断为电脑,简单点洗一个Mozilla/5.0即可
ROBOTSTXT_OBEY:是否遵循机器人协议,默认是true,需要改为false,否则很多东西爬不了
CONCURRENT_REQUESTS:最大并发数,很好理解,就是同时允许开启多少个爬虫线程
DOWNLOAD_DELAY:下载延迟时间,单位是秒,控制爬虫爬取的频率,根据你的项目调整,不要太快也不要太慢,默认是3秒,即爬一个停3秒,设置为1秒性价比较高,如果要爬取的文件较多,写零点几秒也行
COOKIES_ENABLED:是否保存COOKIES,默认关闭,开机可以记录爬取过程中的COKIE,非常好用的一个参数
DEFAULT_REQUEST_HEADERS:默认请求头,上面写了一个USER_AGENT,其实这个东西就是放在请求头里面的,这个东西可以根据你爬取的内容做相应设置。
ITEM_PIPELINES:项目管道,300为优先级,越低越爬取的优先度越高
导出为json或scv格式
执行爬虫文件时添加-o选项即可
scrapy crawl 项目名 -o *.csv
scrapy crawl 项目名 -o *.json
对于json文件,在setting.js文件里添加,设置编码格式,否则会乱码:
FEED_EXPORT_ENCODING=‘utf-8’
爬取百度title标签内容
需要安装protego模块
import scrapy
#from protego import Protego
class QuoteSpider(scrapy.Spider):
name = 'baidu'
allowed_domains =['www.baidu.com']
start_urls = ['http://www.baidu.com']
def parse(self, response, ):
tile = response.xpath('//html/head/title/text()')
print(tile)