Python | 初识爬虫框架Scrapy

简介:

一、前言

今天给大家分享的是,Python里的爬虫框架Scrapy学习,包含python虚拟环境的搭建、虚拟环境的使用、Scrapy安装方法详解、Scrapy基本使用、Scrapy项目目录及内容基本介绍,let's go!

二、Python爬虫框架Scrapy简介

推荐查看Scrapy中文帮助文档:

 1# 维基百科看Scrapy
2'''
3Scrapy(SKRAY -pee)是一个免费和开源 网络爬行 框架 Python编写的。最初设计用于Web抓取,它还可
4以用于使用API或作为通用Web爬网程序提取数据。它目前由网络抓取开发和服务公司Scrapinghub Ltd.维护
5
6Scrapy项目体系结构是围绕“Spider”构建的,它们是自包含的爬虫,可以获得一组指令。遵循其他框架的精
7神,不重复自己的框架,例如Django,它允许开发人员重用他们的代码,从而更容易构建和扩展大型爬行项
8目。Scrapy还提供了一个Web爬行shell,开发人员可以使用它来测试他们对站点行为的假设。
9(英译汉有点尴尬!真的想学,还是好好看上面的帮助文档吧)
10'''

三、看代码,边学边敲边记虚拟环境、Scrapy框架

1. 新建一个虚拟环境

下面 操作之前你需要准备好:
(1) 你的python版本是3.x,最好系统里只有一个python环境,后面所有学习笔记都基于py3的。
(2)python环境里先安装virtualenv模块,基本方法pip install virtualenv 。
(3)选择好虚拟环境的安装目录(我选的是H盘目录下的env文件夹,建议你选的目录路径里最好不要有中文)。

1PS H:\env\> virtualenv spiderenv
2Using base prefix 'c:\\users\\82055\\appdata\\local\\programs\\python\\python36'
3New python executable in H:\env\spiderenv\Scripts\python.exe
4Installing setuptools, pip, wheel...done.
5注: 如果系统中有两个python环境(py2和py3),新建基于py3的虚拟环境方法
6virtualenv -python=你的Python3安装目录(精确到python.exe) spiderenv(虚拟环境名称)

安装完成后再自己选择的目录下会多出一个文件夹(虚拟环境),我这里为H:\env\spiderenv,后面所有爬虫学习过程中需要的模块、接口都将pip(安装)在里面。

2. 打开虚拟环境,安装Scrapy框架

进入到目录H:\env\spiderenv\Scripts(我的虚拟环境目录),按住shift+鼠标右键,打开powershell或者cmd(如果是powershell就先输入cmd),再输入activate,进入虚拟环境,你会发现在路径前面多了一个括号里面是你的虚拟环境名称,表示你进入了虚拟环境。具体看下面:

1# 注:打开powershell 的可以参照下面操作
2PS H:\env\spiderenv\Scripts> cmd
3Microsoft Windows [版本 10.0.17134.112]
4(c) 2018 Microsoft Corporation。保留所有权利。
5
6H:\env\spiderenv\Scripts>activate
7(spiderenv) H:\spiderenv\Scripts>

安装scrapy模块(下面操作都是在虚拟环境下):

方法一:直接pip安装(最简单,安装慢,可能出错)

1pip install scrapy

方法二:轮子(wheel)安装(比较简单,安装速度还可以,基本不出错)
点击这里下载scrapy的.whl文件,然后移动到你的虚拟环境目录下(比如我的就移动到H:\env\spiderenv\Scripts),

1pip install Scrapy-1.5.1-py2.py3-none-any.whl

方法三:豆瓣源安装(比较简单,安装速度快,方便,推荐)

1pip install -i https://pypi.douban.com/simple/  scrapy
3. 快速进入虚拟环境方法

安装virtualenvwrapper模块,用于管理我们所建的虚拟环境

1# windows下安装方法
2 pip install virtualenvwrapper-win
3# 其他环境下安装
4 pip install virtualenvwrapper

安装完成后,打开控制面板 - >系统 -> 高级系统设置 - > 环境变量 ->  系统变量 -> 新建,在新建系统环境变量对话框中输入如下

1变量名:WORKON_HOME
2变量值:你的虚拟环境安装目录
3比如:我的虚拟环境spiderenv安装在H:\env目录下,我的变量值就为:H:\env\
4注:变量值最后一定要以 \ 结尾,不然可能不会产生效果。


7bc8b52fc68ef0a7c9c9ac05d6167433766a2965

workon环境变量新建过程

在上面设置完成后,我们在cmd执行下面命令,即可简单快速进入虚拟环境:

 1PS C:\Users\82055\Desktop> cmd
2Microsoft Windows [版本 10.0.17134.112]
3(c) 2018 Microsoft Corporation。保留所有权利。
4
5C:\Users\82055\Desktop>workon
6
7Pass a name to activate one of the following virtualenvs:
8==============================================================================
9spiderenv
10
11C:\Users\82055\Desktop>workon spiderenv
12(spiderenv) C:\Users\82055\Desktop>
13# 注释:成功进入,退出虚拟环境命令为 : deactivate
4. 创建一个基于Scrapy框架的项目
 1# 进入到自己的项目存放目录
2(spiderenv) H:\env>cd H:\spider_project
3
4# 使用scrapy命令创建一个新工程
5(spiderenv) H:\spider_project>scrapy startproject spider_bole_blog
6
7New Scrapy project 'spider_bole_blog', using template directory 'h:\\env\\spiderenv\\
8lib\\site-packages\\scrapy\\templates\\project', created in:
9    H:\spider_project\spider_bole_blog
10# 提示创建网站爬虫命令
11You can start your first spider with:
12    cd spider_bole_blog
13    scrapy genspider example example.com

创建成功后文件目录结构:

1spider_bole_blog/
2    spider_bole_blog/
3            spiders/
4                __init__.py
5            __init__.py
6            items.py
7            pipelines.py
8            settings.py
9    scrapy.cfg   

目录功能基本介绍:

1spider_bole_blog/: 该项目的python模块。之后我们将在此加入代码。
2spider_bole_blog/spiders/: 放置spider代码的目录。
3spider_bole_blog/items.py: 项目中的item文件。
4spider_bole_blog/pipelines.py: 项目中的pipelines文件。
5spider_bole_blog/settings.py: 项目的设置文件。
6scrapy.cfg: 项目的配置文件。

创建一个jobbole(伯乐在线)的爬虫项目文件:

1# 进入项目文件
2(spiderenv) H:\spider_project>cd spider_bole_blog
3
4# 执行命令,创建一个基于Srapy的伯乐在线的爬虫
5(spiderenv) H:\spider_project\spider_bole_blog>scrapy genspider jobbole blog.jobbole.com
6
7Created spider 'jobbole' using template 'basic' in module:
8  spider_bole_blog.spiders.jobbole

执行完成后会在项目的spiders目录下多出一个jobbole.py文件,文件内容如下:

 1# -*- coding: utf-8 -*-        
2# 编码
3import scrapy
4# 导入scrapy包
5
6#继承scrapy.Spider的 JobboleSpider 爬虫类
7class JobboleSpider(scrapy.Spider):
8
9    # 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
10    name = 'jobbole'
11
12    # 允许下载(访问)域
13    allowed_domains = ['blog.jobbole.com']
14
15    # 包含了Spider在启动时进行爬取的url列表。
16    # 因此,第一个被获取到的页面将是其中之一。
17    # 后续的URL则从初始的URL获取到的数据中提取。
18    start_urls = ['http://blog.jobbole.com/']
19
20    # 是spider的一个方法。
21    # 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。
22    # 该方法负责解析返回数据(response data),提取数据(生成item)以及生成需要进一步处理的URL
23    # 的 Request 对象。
24    def parse(self, response):
25        pass

四、后言

今天讲的东西涵盖面还比较广,特别是虚拟环境管理这块,virtualenvwrapper还有很多命令,很实用,后面会慢慢给大家提及,大家也可以自己百度、谷歌查一下,另外,Scrapy模块今天也算正式开始,go on!


原文发布时间为:2018-09-6

本文作者:XksA

本文来自云栖社区合作伙伴“Python专栏”,了解相关信息可以关注“Python专栏”。

相关文章
|
4月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
4月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
402 0
|
4月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
475 0
|
5月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
592 0
|
4月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
293 0
|
4月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
5月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
889 19
|
4月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
4月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。

推荐镜像

更多