vlambda博客
学习文章列表

python的scrapy框架爬虫基础



     来源:文科数据员

From:阿里云大学的爬虫项目编写实战课程

For:进入scrapy的大门


一般来说,我们在爬虫的时候会编写一个.py文件来实现爬虫,一旦需要解析、反爬、存储等操作后,这个代码就会很复杂。懒惰使人创新,为了提高爬虫效率,程序员们设计出了scrapy框架,利用多个.py可以迅速创建爬虫半成品,还方便日后爬虫项目的维护。


python的scrapy框架爬虫基础


安装,避坑

安装时会遇到很多坑,所以请务必采用韦玮老师推荐的方式。阿里云课堂韦玮老师的课程ppt截图如下——
python的scrapy框架爬虫基础
注意,这里有有的whl文件名称是cp35-win32...这些是python的版本与相应的电脑系统;
下载pywin32很容易,但配置是我所不熟悉的。方式是
找到pywin32所在的文件夹,将其中的两个dll文件复制到c盘中windows文件夹中的system32文件夹里面。即路径为C:\Windows\System32
按顺序搞定这些步骤,将会完成安装。

scrapy通过指令来管理爬虫项目的。所以需要熟悉各个指令。**

python的scrapy框架爬虫基础

创建爬虫项目

首先,需要清楚,爬虫项目与爬虫文件不一样,二者的脚本文件不一样。爬虫项目>爬虫文件。

第一步

 
   
   
 
#第一步:在指定的文件夹中,打开cmd,输入
scrapy startproject ali_first #将会生成ali_first文件夹
将会在指定文件夹中,生成ali_first文件夹,打开ali_first文件夹后,如下
python的scrapy框架爬虫基础
进入核心文件
python的scrapy框架爬虫基础
init是初始化文件,items是项目定义文件,可以定义内容、标题这些内容;
定义好了之后,我们打开spider文件夹(因为一个项目有多个爬虫文件,所以放在一个文件夹中);
middlewares是中间键;
pipelines是爬后处理;
settings是设置信息,包括伪装uesagent这些。

进入爬虫项目

配置好之后,我们就可以进入项目进行操作。

第二步

 
   
   
 
# 第二步:进入爬虫项目
cd ali_first #cmd深入所创建的文件夹里
scrapy genspider -l #查看爬虫模板,注意是l,不是1
得到
 
   
   
 
Available templates:
 basic #基础模板
 crawl #通用模板,可以套用改模板写自己的爬虫(最常用)
 csvfeed #爬csv的
 xmlfeed #爬xml的

第三步

 
   
   
 
# 生成自己的scrapy爬虫
scrapy genspider -t basic fst aliwx.com.cn # 进入哪个模板就写哪个模板,然后把自己创建的文件名写在basic后面。然后把要爬的域名写在文件名之后。注意是域名,不含主机名www。

第四步

 
   
   
 
#运行刚才生成的自己的爬虫文件
scrapy crawl fst
其他命令
 
   
   
 
#查看当前文件夹的爬虫有哪些
scrapy list
# 查看还有哪些操作
scrapy
下面是scrapy的所有指令。常用的就是以上演示的那些。
 
   
   
 
Scrapy 1.8.0 - project: ali_first

Usage:
 scrapy <command> [options] [args]

Available commands:
 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

Use "scrapy <command> -h" to see more info about a command

编写基础

以下将正式进行编写练习,除了上面所列的创建步骤之外,增加了编写爬虫文件,以及配置的步骤。阿里的这位老师建议要尽量完整这些步骤,尤其是pipelines文件。
python的scrapy框架爬虫基础

简单案例-阿里文学首页书名

爬取阿里文学,首页的书名

第一步

创建爬虫项目。为方便起见,使用上面已经创建好的。

第二步

分析目标网站,查到书名所在的elements,如下。
 
   
   
 
<p class="title" data-spm-anchor-id="aliwx.index.0.i1.836a204ecHNyb0">最佳豪婿</p>

第三步

在lst文件中,把start_urls补全。把www.加上。
 
   
   
 
# -*- coding: utf-8 -*-
import scrapy

class FstSpider(scrapy.Spider):
   name = 'fst'
   allowed_domains = ['aliwx.com.cn']#爬虫域名
   start_urls = ['http://www.aliwx.com.cn/']#爬虫起始网址

   def parse(self, response):
       pass

会按顺序响应回调函数,就是parse函数中的response的相应信息。就在parse函数下面进行编辑内容。

第四步

定义目标 ,回到items文件中定义要爬取的内容的“容器”变量。title=scrapy.Field()
 
   
   
 
# -*- coding: utf-8 -*-
import scrapy

class AliFirstItem(scrapy.Item):
   # define the fields for your item here like:
   # name = scrapy.Field()
   title = scrapy.Field() #创建title的容器,当然可以不止一个容器
之后就可以在fst文件中进行代码编写了

第五步

从核心文件出发,导入items文件中的类函数class
 
   
   
 
from ali_first.items import AliFirstItem
创建一个它的对象即可使用。
 
   
   
 
def parse(self, response):
item = AliFirstItem()#创建一个对象即可使用parse
item['title']=response.xpath("//p[@class='title']/text()").extract()#爬取其中p的title的text文件
yield item#item就可以返回给另一个文件,这里就是返回给了pipelines文件
这里也可以先不yield,先print一下,测试一下看能不能输出
 
   
   
 
print(item)
#yield item

#在cmd中运行fst文件
scrapy crawl fst
测试了一下,输出正常。

第六步

在pipelines中编写
 
   
   
 
class AliFirstPipeline(object):
   def process_item(self, item, spider):
       for i in range(0,len(item['title'])):#枚举每一项获取的title
           print('---------')#分割线以直观查看一下
           print(item['title'][i])#得到每一项
       return item
在setting文件中开启原来的pipelines。
 
   
   
 
ITEM_PIPELINES = {
   'ali_first.pipelines.AliFirstPipeline': 300,#开启的时候,去掉注释,将piplines后面的类函数名称更换为现在pipelines中的那个。
}
最后,在cmd中输出以下
 
   
   
 
---------
绝品小神农
---------
都市弃少兵王
---------
洪荒神帝
---------
村野小圣医
...


参考资料:阿里云大学-python完全自学手册
文字编辑:数据猿Riggle

◆ ◆ ◆  ◆ 






管理员二维码:


猜你喜欢