一.项目背景
之前文章[Scrapy爬虫框架初步使用介绍](http://mp.weixin.qq.com/s?__biz=MzIzODI4ODM2MA==&mid=2247484881&idx=1&sn=5d205c3315927845fed5aa4dfbb4f4da&chksm=e93ae956de4d604052e6d18ca10fc081f32cd8479a11420cd13fe20bbb963044b13d55b15390&scene=21#wechat_redirect)我们介绍了Scrapy框架运行基本原理,紧接着我们介绍了如何利用Scrapy爬取文本数据[Scrapy+MySQL+MongoDB爬取豆瓣读书做简单数据分析](http://mp.weixin.qq.com/s?__biz=MzIzODI4ODM2MA==&mid=2247484898&idx=1&sn=763a73b7d4b7c991d1aeb2ceb389b686&chksm=e93ae965de4d6073da55c6db07bfe142c1d18ca744dae33214a2dba8940db348616e256a7e50&scene=21#wechat_redirect),以及如何利用Scrapy爬取图片[Scrapy爬取某网站美女图片](http://mp.weixin.qq.com/s?__biz=MzIzODI4ODM2MA==&mid=2247486610&idx=1&sn=e05d207e965d7bcc0507a195f25da2b9&chksm=e93ae015de4d69031ae847bf5f12adef61e82d263aa8366e9533a58c7011b6396b4a05051cea&scene=21#wechat_redirect),本次我们分享如何利用Scrapy爬取文件。
本次我们爬取目标网页为:https://matplotlib.org/2.0.2/examples/index.html
二.实现过程
1.创建项目
》》scrapy startproject matplot_file
》》进入该目录 cd matplot_file
》》生成爬虫 scrapy genspider mat matplotlib.org
》》运行爬虫 scrapy crawl mat -o mat_file.json
2.数据爬取
》》解析数据
》》存储数据
# -*- coding: utf-8 -*-
import scrapy
from matplot_file.items import MatplotFileItem
class MatSpider(scrapy.Spider):
name = 'mat'
allowed_domains = ['matplotlib.org']
start_urls = ['https://matplotlib.org/2.0.2/examples/index.html']
def parse(self, response):
#获取所有li元素
for lis in response.xpath('//*[@id="matplotlib-examples"]/div/ul/li'):
#遍历li元素
for li in lis.xpath('.//ul/li'):
#获取链接
url=li.xpath('.//a/@href').get()
#拼接链接
url = response.urljoin(url)
#爬取文本
yield scrapy.Request(url, callback=self.parse_html)
#解析文本
def parse_html(self,response):
#获取文件链接
href = response.xpath('//div[@class="section"]/p/a/@href').get()
#拼接链接
url=response.urljoin(href)
#打印控制台
print(url)
#初始化对象
matfile=MatplotFileItem()
#存储对象
matfile['file_urls']=[url]
#返回数据
yield matfile
【注】以上是mat.py中代码
# -*- coding: utf-8 -*-
BOT_NAME = 'matplot_file'
SPIDER_MODULES = ['matplot_file.spiders']
NEWSPIDER_MODULE = 'matplot_file.spiders'
#设置FilePipeline
ITEM_PIPELINES = {
'scrapy.pipelines.files.FilesPipeline':1,
}
#设设置文件保存路径
FILES_STORE = 'mat_file'
ROBOTSTXT_OBEY = False
【注】以上是settings.py中代码
import scrapy
class MatplotFileItem(scrapy.Item):
# define the fields for your item here like:
#文件url
file_urls = scrapy.Field()
#下载文件信息
files = scrapy.Field()
【注】以上是items.py中代码
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据
+关注
关注
8文章
7010浏览量
88978 -
框架
+关注
关注
0文章
403浏览量
17479 -
运行
+关注
关注
0文章
25浏览量
15399
发布评论请先 登录
相关推荐
python实现网页爬虫爬取图片
来实现这样一个简单的爬虫功能,把我们想要的代码爬取到本地,功能有点类似我们之前学过的批处理。下面就看看如何使用python来实现这样一个功能,主要分为三步,如下:一. 获取整个页面数据首先我们可以先
发表于 04-05 15:32
Python爬虫与Web开发库盘点
Python爬虫和Web开发均是与网页相关的知识技能,无论是自己搭建的网站还是爬虫爬去别人的网站,都离不开相应的Python库,以下是常用的Python爬虫与Web开发库。1.爬虫库
发表于 05-10 15:21
python学习笔记-安装scrapy
的。。下载后会自动安装 OK,Scrapy终于完全安装完毕了我将所有安装文件以及上文提到的python代码也一起打包,下载地址在下面 http://download.csdn.net/detail/tkfeng29/900266
发表于 07-10 07:49
如何使用Scrapy爬取网站数据
网页抓取的主要目标是从无结构的来源提取出结构信息。Scrapy爬虫以Python字典的形式返回提取数据。尽管Python字典既方便又熟悉,但仍然不够结构化:字段名容易出现拼写错误,返回不一致的信息,特别是在有多个爬虫的大型项目中
评论