scrapy笔记

1 scrapy的运行原理

参考:
Learning Scrapy笔记(三)- Scrapy基础
Scrapy爬虫入门教程四 Spider
spider就是你用来定义对某个特定网站的爬取动作的工具,他的爬取循环类似于这样:

1、 首先要将你指定的初始URL封装成Request对象,并且要指定在网页返回该请求的内容后应该用哪个函数来处理网页的内容response。这个函数就是callback回调函数

默认情况下,会调用start_requests()函数,对start_urls中的URL分别生成一个Request对象,并且指定parse()函数作为回调函数(回调函数指的是callback变量指定的函数)

2、 在回调函数中,可以处理response变量,然后返回一个已经提取好数据的字典或者是一个Item对象,或者是Request对象(在这个Request对象中,也可以指定一个回调函数,同样地,处理完这个Request之后生成的response就会传送到回调函数中处理)

3、 在回调函数中,也可以提取网页内容,通常使用Selector(也可以使用BeautifulSoup,lxml或者其他你熟悉的机制)来生成包含了解析数据的item

4、 最后,这些从spider中返回的item通常会存入到数据库中,或者写入到文件中

2 双向爬取

参考:

  1. Scrapy Learning笔记(四)- Scrapy双向爬取
  2. 爬虫入门(5)-Scrapy使用Request访问子网页
    这篇文章中虽然是主页面、子页面,但是只有一个主页面,没看见在主页面之间继续跳转,所以其实就是单向爬取,
  • 水平方向:从一个索引页到另一个索引页,主页之间
  • 垂直方向:从一个索引页到条目详情页,主页到子页

要点提示

  • import部分
    因为要在parse()解析response中嵌套request子网页的url,并取得它的response,并进行解析提取,因此:
    在通常import Item的基础上,
from daomubiji.items import DaomubijiItem

还需要import如下:

import scrapy
from scrapy.spiders import Spider
from scrapy.selector import Selector
from scrapy.http import Request
  • def parse()方法+新增def parse_son(self,response)方法
    在原def parse()方法的基础上,还需要新增def parse_son(self,response)方法用于提取子页面的信息。
    而且,通常是先定义def parse_son(self,response),再定义def parse()
    但是,需要知道的是:函数起初肯定还是从def parse()开始执行
  • def parse_son(self,response)的核心格式
    该方法的目的就是返回yield item,不然就没意义了。
    注明:item在任何时候返回都可以,没有限制
  • def parse(self,response)的核心格式
    核心思想:把每个主页面内的子URL,和主页面之间跳转的主URL平等对待,只是在最后一个子URL后增加一个if判断,设两个不同的yield。并不是在主parse中嵌套子URL的request和parse_son请求和提取循环!!!
    该方法返回值需要用if设两个yield:
    if 不是当前主页中最后一个子URL
    则yield Request(子页面的url, callback=self.parse_son)
    else yield(主页面的URL,callback=self.parse)
    误区解释:scrapy的工作原理是将每个完整parse运行完成后,返回一个URL,将这些URL组成列表而依次读取。重点:这跟URL是在主parse中yield返回,还是在子parse_son中yield返回没有关系,即可以在主parse中返回下一个循环的URL,而并非一定要在子parse_son的末尾(此处为当前整个主parse的运行尾端)返回下一次的URL,而在这里可以只返回item!!!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容