Python爬虫Scrapy框架入门(3)
往往需要爬取的网页是呈一个树状结构。比如,需要先爬取一个目录,然后再在目录中选择具体的爬取目标。而目录和具体目标之间,网页结构不同,使得我们不能使用相同的爬取策略。
从之前的经验来看,我们对scrapy进行操作是从Spider的Parse()函数作为入口。不如在parse()函数中对对目录进行操作,获取相应目标的url,再进一步爬取具体内容。
代码如下:
class ZhangzishiSpider(scrapy.Spider):
name = 'zhangzishi'
allowed_domains = ['http://www.zhangzishi.cc/']
start_urls = ['http://www.zhangzishi.cc/category/welfare'] def parse_art(self, response):
imgs = ZhangzishiArtItem()
imgs['img_urls'] = response.xpath('//article//img//@src').extract()
yield imgs def parse(self, response):
url_list_item = ZhangzishiListItem()
url_list_item['art_urls'] = response.xpath('//article[@class="excerpt"]//h2//a[@target="_blank"]//@href').extract()
#yield url_list_item
for url in url_list_item['art_urls']:
if url:
print 'analysing article:\t' + url
yield scrapy.Request(url, callback=self.parse_art, dont_filter=True)
对于parse,每次获取item之后,通过yield发出新的request,获取具体的爬取目标,再在parse_art函数中对相应的response进行处理
其实改动不是特别大。只是更深层次理解了这样几点:
- 首先,scrapy是根据start_urls中的url,获取第一个response,进入parse()
- 我们爬取到二层url之后,返回response可以指定处理函数
- 通过yield抛出相应的item,进入pipeline进行处理
Python爬虫Scrapy框架入门(3)的更多相关文章
- Python爬虫Scrapy框架入门(0)
想学习爬虫,又想了解python语言,有个python高手推荐我看看scrapy. scrapy是一个python爬虫框架,据说很灵活,网上介绍该框架的信息很多,此处不再赘述.专心记录我自己遇到的问题 ...
- Python爬虫Scrapy框架入门(2)
本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写 ...
- Python爬虫Scrapy框架入门(1)
也许是很少接触python的原因,我觉得是Scrapy框架和以往Java框架很不一样:它真的是个框架. 从表层来看,与Java框架引入jar包.配置xml或.property文件不同,Scrapy的模 ...
- python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)
操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...
- python爬虫scrapy框架
Scrapy 框架 关注公众号"轻松学编程"了解更多. 一.简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量 ...
- Python爬虫 ---scrapy框架初探及实战
目录 Scrapy框架安装 操作环境介绍 安装scrapy框架(linux系统下) 检测安装是否成功 Scrapy框架爬取原理 Scrapy框架的主体结构分为五个部分: 它还有两个可以自定义下载功能的 ...
- Python爬虫-- Scrapy框架
Scrapy框架 Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码.对于会阻塞线程的操作包含访问文件.数据库或者Web.产生新的进程并需要 ...
- Python爬虫-Scrapy框架的工作原理
Scrapy框架工作原理 Scrapy框架架构图 Scrapy框架主要由六大组件组成,分别为: 调度器(Scheduler),下载器(Downler),爬虫(Spiders),中间件(Middwa ...
- python爬虫----scrapy框架简介和基础应用
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...
随机推荐
- 前端CDN公共库
通过使用公共的CDN脚本和样式库,可以在一定程度上加速访问.节省服务器流量.提升你的网站用户体验.本文将介绍国内比较常用的几种免费的CDN库,包括百度.新浪.360.又拍和七牛等. 百度CDN公共库 ...
- app xml报错
如下图所示红色区域,xml中第7行提示以下错误,检查了好久,没发现什么异常,请高人指点下,谢谢! error parsing xml:not well-formed (invalid token)
- Greenplum记录(二):估计存储容量
存储空间除了用来存储用户数据,还需要:landing backup files and data load files 空系统的存储空间:disk_size * number_of_disks 除去系 ...
- Zookeeper学习之:paxos算法
paxos算法的重要性众所周知,它给如今的分布式一致性提供了迄今为止最好的解决方案.无论是Lamport自己的论文描述,还是网上的诸多资料,对paxos的描述都是及其简洁的,给人的感觉是paxos看似 ...
- Vue.js简单实践
直接上代码,一个简单的新闻列表页面(.cshtml): @section CssSection{ <style> [v-cloak] { display: none; } </sty ...
- linux 远程连接工具——MTPuTTY
简介 MTPUTTY是一个非常流行的ssh客户端. 安装 官网地址:http://www.ttyplus.com/multi-tabbed-putty/ 下载并安装,运行软件,如图 添加服务器 结语 ...
- TeamViewer 12.0.71503 Patch By.Sound
TeamViewer - the All-In-One Software for Remote Support and Online Meetings - Remote control any com ...
- yii2 解决POST 400错误
第一种解决办法是关闭Csrf public function init(){ $this->enableCsrfValidation = false; } 第二种解决办法是在form表单中加入隐 ...
- vtkTubeFilter实例
filter that generates tubes around lines vtkTubeFilter is a filter that generates a tube around each ...
- 五大主流浏览器 CSS3 和 HTML5 兼容性大比拼
各大主流浏览器对 CSS3 和 HTML5 的支持越来越完善,曾经让多少前端开发人员心碎的IE系也开始拥抱标准.就在前几天,W3C的 HTML5 社区领袖 Shelley 宣布,HTML5的开发工作已 ...