scrapy-scrapy如何打开页面?[转]
一、首先我们来看scrapy spider如何打开页面:
要打开页面,我们用的是手,同样scrapy也有一个得力助手:spider;至于spider如何打开页面,且听我娓娓道来,如果一上来就噼里啪啦的给诸位说scrapy spiders需要继承神马类、神马方法、神马常量,我想很多喷油都会觉得莫名其妙,就像一个巴掌突然打来一样,所以这里我试图用知其所以然的方式让你知其然!很多文档写得莫名其妙,就是作者一上来就用这种方式,让本来懂的你却越看越凌乱,究其原因就是很多作者重于形,却轻于意,说得具体点就是注重实现,而不注重为什么要这样实现,就像spiders的内部结构一来就告诉你要继承这个、这个……,却没告诉你为什么要继承,如果能稍加解释,那小白们就更容易接受了!

那我们先说说人如何scrapy如何打开页面,我们一般是用爪爪,首先搜索、然后点击、然后又点击,就这样不断搜索、不断点击然后就到了,比如搜淘宝2月13号套套销量,是不是首先百度搜索:淘宝,然后点击进去,然后搜索:套套,然后就到了。毕竟蜘蛛不会用键盘、鼠标,因此不能用这样的方式,何况这样的方式太慢。那蜘蛛到底如何打开页面呢?很简单,蜘蛛从互联网的本质出发,我们浏览页面都是一个:发送请求、返回请求的过程,比如点击淘宝,然后淘宝就打开,其实就是这么一个过程(这是网络的基础原理,不熟悉的诸位度娘一下);那蜘蛛要发送请求,那总得要有请求链接,如果木有,蜘蛛肯定得不到返回,那页面也就打不开了,因此引出了scrapy spiders的第一个必须的常量:
start_urls
上面的文档《scrapy start_url》已经详细介绍过,URL有两种写法,一种作为类的常量、一种作为start_requests(self)方法的常量,无论哪一种写法,URL都是必须的!有了URL那就可以发送请求了,也就类似我们的点击页面、然后打开页面的过程,那这一个过程肯定要有个方法或来完成;如果URL是定义在start_request(self)这个方法里面,那我们就要使用: yield scrapy.Request 方法发送请求:如下:
import scrapy
class simpleUrl(scrapy.Spider):
name = "simpleUrl" # 另外一种初始链接写法
def start_requests(self):
urls = [ #爬取的链接由此方法通过下面链接爬取页面
'http://lab.scrapyd.cn/page/1/',
'http://lab.scrapyd.cn/page/2/',
]
for url in urls:
#发送请求
yield scrapy.Request(url=url, callback=self.parse)
这样写的一个麻烦之处就是我们需要处理我们的返回,也就是我们还需要写一个callback方法来处理response;因此大多数我们都是把URL作为类的常量,然后再加上另外一个方法:
parse(response)
使用这个方法来发送请求,可以看到里面有个参数已经是:response(返回),也就是说这个方自动化的完成了:request(请求页面)-response(返回页面)的过程,我们就不必要再写函数接受返回,所以这样就比较方便了!
import scrapy
class simpleUrl(scrapy.Spider):
name = "simpleUrl"
start_urls = [ #另外一种写法,无需定义start_requests方法
'http://lab.scrapyd.cn/page/1/',
'http://lab.scrapyd.cn/page/2/',
] def parse(self, response):
page = response.url.split("/")[-2]
filename = 'mingyan-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('保存文件: %s' % filename)
|
好了,这就是scrapy打开页面的方法;页面打开后是不是我们就该提取数据了?那scrapy如何提取?
申明:本文《scrapy如何打开页面?》 属于【Scrapy 中文网】原创文章,商业转载请联系作者获得授权,非商业转载请注明出处。
scrapy-scrapy如何打开页面?[转]的更多相关文章
- 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)
上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...
- Scrapy爬取静态页面
Scrapy爬取静态页面 安装Scrapy框架: Scrapy是python下一个非常有用的一个爬虫框架 Pycharm下: 搜索Scrapy库添加进项目即可 终端下: #python2 sudo p ...
- scrapy之盗墓笔记三级页面爬取
#今日目标 **scrapy之盗墓笔记三级页面爬取** 今天要爬取的是盗墓笔记小说,由分析该小说的主要内容在三级页面里,故需要我们 一一解析 *代码实现* daomu.py ``` import sc ...
- 【转】iframe和父页,window.open打开页面之间的引用
[转]iframe和父页,window.open打开页面之间的引用 iframe和父页,window.open打开页面和被打开页面之间的关系可以通过下面的对象获取到 1)通过iframe加载的,在if ...
- HTML:模拟链接被按下,在新标签页打开页面,不使用window.open(可能被拦截)
当按下一个按钮时,想打开一个新的标签页,可以使用window.open去实现但是因为使用window.open在新窗口或者新标签页中打开页面,有可能被浏览器给拦截.为了解决这个问题,可以模拟链接被按下 ...
- C# winform调用浏览器打开页面方法分享,希望对大家有帮助
在很多客户端程序中我们都需要调用浏览器打开网页,这里分享一个可以在我winform程序调用浏览器的方法,测试通过了. 声明:这个方法是上万个用户测试通过的,不是我没有测试通过就拿出来分享,那个是自己搬 ...
- 如何在Flash中新窗口打开页面而不被拦截
Flash的wmode必须是opaque或者transparent,允许Flash访问页面脚本.另外跳转必须是点击直接触发. 代码:ExternalInterface.call("windo ...
- (转载)HTML:模拟链接被按下,在新标签页打开页面,不使用window.open(可能被拦截)
原文: http://www.cppblog.com/biao/archive/2010/08/21/124196.html 当按下一个按钮时,想打开一个新的标签页,可以使用window.open去实 ...
- Easyui datebox控件打开页面就验证解决方法
问题描述: datebox时间控件有些场景下默认值需要为空,但是为空的情况下打开页面会自动验证,十分影响美观. 实现原理: <input class="easyui-databox&q ...
随机推荐
- Noip前的大抱佛脚----奇技淫巧
STL函数 set set查找前驱后继 multiset<int>::iterator iter; S.insert(x); iter=S.find(x);//返回迭代器 iter--;/ ...
- 苏州Uber优步司机奖励政策(4月23日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 牛客国庆集训派对Day1 B. Attack on Titan
B. Attack on Titan 链接 #include<cstdio> #include<algorithm> #include<cstring> #incl ...
- 为firefox添加flash插件
需要自行下载flash for firefox进行安装,安装后即可看到 Shockwave Flash 插件
- 传输层tcp协议以及scoket套字节方法
一.传输层 1.传输层的由来: 网络层的IP帮我们区分子网 以太网的Mac帮我们找到主机 所以通过IP和Mac找到了一台特定的主机 如何找到该特定主机的应用程序呢? 答案是通过端口,端口即应用程序与网 ...
- js简单时间比较的方法(转)
//时间比较(yyyy-MM-dd) function compareDate(startDate, endDate) { var arrStart = startDate.split(" ...
- STM8S——Clock control(CLK)
1.主时钟源 有四种时钟源可以用做主时钟: (1)1-24MHz高速外部晶体振荡器(HSE) (2)最大24MHz高速外部时钟信号(HSE user-ext) (3)16MHz高速内部RC振荡器(HS ...
- Macaca上手体验
在研究了一段时间Appium后,尝试对另一个框架做实验——Macaca,阿里的开源测试框架,该框架不只适合移动端,同样适用于web端,可谓是方便的很啊~ 同时支持js.java.python.封装好的 ...
- 第一次玩github,第一个开源小项目——xxoo
引言 由于最近的工作写代码比较少,这让LZ产生了一丝危机感.于是便想找一个办法可以没事自己写写代码,自然而然就想到了github.接下来便是一阵捣鼓的过程,其实整个过程很快,主要过程就是注册一个账号, ...
- 【Python学习笔记】正则表达式
Ref:https://deerchao.net/tutorials/regex/regex.htm#greedyandlazy 1. 常用元字符 2.字符转义 查找元字符本身时,需要使用\来取消这些 ...