失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python官网学习爬虫资料_Python爬虫学习?

python官网学习爬虫资料_Python爬虫学习?

时间:2023-01-28 21:43:01

相关推荐

python官网学习爬虫资料_Python爬虫学习?

1 爬虫是互联网上最常见的一种东西了吧。

爬虫这东西每天都在网上爬大量的信息,各大搜索引擎厂商每天都有上百万的爬虫在网络上活动,这些爬虫的作用就是给搜索引擎采集互联网上最新的内容,采集来的内容经过分类、加工之后,进入搜索引擎的索引。这是爬虫最常见的应用。

关于搜索引擎的理论非常多,应该已经形成系统的理论和方法了。这里不再多追求搜索引擎的细节,只来看看爬虫如何爬有效的信息。

ps. 这个博客已经很久没有更新了。现在时间越来越少,平时鲜有时间来更新博客了。

最近某人发现,python其实是一种很适合写爬虫的语言,而且python越用越顺手。现在若是有人问我“c++和c#学哪一个?“之类的问题的时候,我一定会说,学python吧,因为生命短暂,你应该学习python。

所谓爬虫,就是把网页的html下载下来,然后从里面提取出来有用的信息,这些有用的信息一般就是正文,图片,链接一类的信息。

针对特定网站的爬虫就更好写了,用正则表达式,把网页里的链接信息找到,然后找到需要的信息,保存在本地,然后进入下一个链接重复上一次的过程。

下面的脚本演示如何从加菲猫的官网上把从1978年至今的所有漫画全部下载下来

import os,urllib,urllib2,re

hosts = ""

#initpos = "/mobile/garfield/1978/06/19"

initpos ="/mobile/garfield/1979/08/08"

pname = pile('''.+?(.*?)''')

pcomic = pile('''

''')

pnext = pile('''''')

def getpage(url):

print url

req = urllib2.Request(url)

req.add_header("User-Agent","Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/0101 Firefox/21.0")

req.add_header("If-None-Match","c1858c2845ca9501136ca83d624f8d4d")

u = urllib2.urlopen(req).read()

return u

def getnextpos(content,patten):

r = patten.findall(content)

for x in r:

print 'find next: ',x

return x

def savecomic(content,patten):

r = patten.findall(content)

print 'find commic:',r

r2 = pname.findall(content)

print 'find name:',r2

urlcomic = r[0]

u = urllib.urlopen(urlcomic).read()

name = r2[0].replace(' ','').split(',')

year = name[-1]

day = name[-2]

filename = 'test.jpg'

if not os.path.exists(year):

os.makedirs(year)

# is gif file ,the name the file as gif

if ((u[0] is 'G') and (u[1] is 'I') and (u[2] is 'F')):

filename = year+day+'.gif'

else:

filename = year+day+'.jpg'

f = file(year+"/"+filename,"wb+")

f.write(u)

f.close()

def main():

url = hosts+initpos

while(True):

c = getpage(url)

savecomic(c,pcomic)

u = getnextpos(c,pnext)

if u is None:

break

else:

url = hosts+u

if __name__ == '__main__':

main()

2

想学习python的爬虫,除了python的四大经典爬虫模块外,那就不得不说说scrapy了,scrapy简单来说就是为了爬取我们想要的数据而编写的一个应用框架。更专业点的说法是:scrapy是python开发的一个为了爬取网站数据,提取结构性数据而编写的应用框架,可以应用在数据挖掘、信息处理、存储历史数据等一些列的程序中,框架内包含的各种接口,可以让我们灵活的将其应用于各种需求中。

那么,scrapy到底为我们提供了哪些高效的特性来简化我们的工作呢:

对html,xml源数据的选择和提取的支持,提供了selector选择器和Xpath表达式进行处理,使用正则表达式来提取数据。提供交互式的shell终端,为编写过程中验证部分提取数据提供了便利(selector、xpath)通过feed为导出的数据提供了多种格式(json、csv、xml),多种存储端(ftp、s3、本地文件系统)的内置支持。提供一些列在spider之间共享的可复用的过滤器即Item Loaders,内置的服务可以更好的进行智能文件爬取数据。针对非英语语系中不标准或者错误的编码声明,提供了自动检测以及健壮的编码支持。具有高扩展性,通过使用signals,使用设计好的API如中间件、extensions、pipelines来实现自己所需的功能。内置的中间件及扩展可以为cookies and session处理、Http压缩、HTTP认证、HTTP缓存、user-agent、robots.txt等功能提供支持。内置Telent终端,通过在Scrapy进程中钩入Python终端,使您可以查看并调试爬虫。

网络上最流行的scrapy架构为:

Scrapy Engine(爬虫引擎):核心部分,用来处理整个系统的数据流。scheduler(调度器):用来接收引擎发过来的requests,并在引擎再次发来请求的时候,返回信息。Downloader(下载器):从scheduler处获取目标网页数据,并将数据返回给spiderSpiders(蜘蛛):主要用它指定域名和网页的解析规则,并编写用于分析经response返回的item的类以及额外跟进的URL类。每个Spider负责处理相应的网站。Item Pipeline(项目管道):负责处理spiders提取出来的item,并对其进行验证、存储。Downloader Middlewares(下载器中间件):位于Scrapy engine和downloader之间的钩子,通过插入自定义的代码,来扩展scrapy的功能,并处理Scrapy引擎与下载器之间的requests和response。Spider Middlewares(蜘蛛中间件):介于Scrapy engine和spider之间的钩子,主要工作是处理spide的响应输入和请求输出。Scheduler Middlewares(调度中间件):介于Scrapy engine和scheduler之间的钩子,从Scrapy引擎发送到调度的请求和响应。

整个爬虫的工作流程可简单理解为:

从初始URL开始,Scheduler会将其交给Downloader进行下载,Spider会对Downloader下载下来的数据进行分析。经Spider的分析有两种结果:如果是需要进一步抓取的链接,则这些东西会被传回Scheduler,;另一种是需要保存的数据,则被送到Item Pipeline那里经第三步,如果是第一种则再次回到第一步进行。如果是第中则对数据进行后期处理(详细分析、过滤、存储等)。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。

而在爬虫的过程中,数据流懂得过程为:

引擎按照给定的初始网址,打开网站,找到处理该网站的Spider并向Spider请求要爬取的第一个网页地址。引擎获得地址后,使用scheduler进行request。处理完第一个网址后,引擎向调度器请求下一个目标网址。scheduler向引擎返回一个新的网址,引擎通过下载中间件将该网址转给downloader。downloader继续从网络中获取所需数据,下载完成后,返回一个response,携带者这些数据通过下载中间件流向引擎。引擎将收到的response通过Spider中间件流向Spider,交由Spider处理。Spider处理这个response并返回爬取到item或者新的request给引擎。引擎如果收到的是item则将其流向item Pipeline引擎如果收到的是新的request,则将其发向调度器。重复上述操作,直至没有新的request,引擎关闭该网站,此次爬取结束。

本期对scrapy的简单介绍就到这里,以后的文章将会从项目入手学习scrapy,如果你对scrapy也感兴趣,可以关注一下以便系统为您继续推荐。谢谢!

自己多问下为什么学python

如果一门语言没有改变你的编程思维,那么它不值得你去学习”。如果这么说,我们大学的时候,学习了c,c++,java,C#,算是值得学习么?很多时候是不值得,我觉得我们大学的课程就是用java,c#,c++把"C程序设计"又上了一遍.

这是因为,学校的老师会C和java之类的,所以要跟着规矩开这门课,(这也就是为什么,许多学校还在教vb,),这也就是为什么,你所以为的一样就是大家都有For都有while,都有switch..都有Class...都有int 都有float,所谓的不一样就是用C有指针,java没有,这就是为什么教育是失败的,这也就是为什么,我目前认识的几个编程大牛

python的优点:简单 我所说的简单,是相比于象C和C++这样的语言,你为了编程,要学习许多偏底层的东西.在比如,你在学习一个新的编程范式,或者想要马上做个例子看看,试验某个API,如果你是写java的,你不得不去写一个main,写一些构造,即使有IDE这样的东西,能够为你带来代码生成器,而我做得就是写一段“脚本”,或者打开python交互式解释器就行了。

自己认识的python朋友出去工作,工资比较高,然后自己又刚刚好是会python所以选择学习python,这样的人比较危险但是也比较有激励,还有就是觉得python比其他开发语言好用。

学完python前景会咋样

其实我个人是很看好python未来的就业前景的,因为我认识太多的工程师都已经在学python,很多都是月收入大几万的

我个人也并非一直用python。前些年主要用c/c++以及java开发一些通信,移动系统,互联网通信。近3年开始才转向python。坦白的说,这可能与你相处的公司以及环境不大一样。随便举个例子,google的protocol buffer协议一出来就具有c++/python/java三种语言支持。google的广告系统早在03,04年左右就一并对python进行了webservice支持,大部分涉及基础核心系统的公司,都开始对python进行了扩展支持。甚至开源社区的postgresql数据库,除了自身的ansi SQL,pgsql,pg/TCL,PG/PERL之外对python进行了内嵌支持,唯独却没有呼声很高的java。在FREEBSD(MIT)/LINUX(GPL)平台上,对java可能排斥性比较大,但综合而言,目前python发展还没有java那种普及,主要是python大部分工作仍然是在较为深入地系统层和框架层做设计开发,例如django,SQLAlchemy,fail2ban,mail邮件系统,twisted等等。这部分对于那种习惯应用前辈们框架的编码人员而言,缺乏创造力的他们根本无法适用这种开发。尤其在python涉及一些系统层面需要有较强的c/c++能力,这部分人在国内要么就累得要死没时间,要么就啥都不会就会拷贝代码,而国内公司也鲜有主动去做这部分基础劳动的,大多都是等别人做好了在直接拿来用,所以造就了任何技术性的东西出来,国内都是先等等看,然后抄袭应用。

大环境如此,但千万误认为先等等看吧。对于一个技术人员而言,缺乏对新技术的渴望与热情,这是一种非常危险的事情。我工作8年了,按照国内很多的人的说法早已不做代码了,但又一次在听一个老外的演讲,他说他50多岁仍然每天坚持写代码,了解最新的动态,所以他才能做到他们公司的首席科学家,因此它才能时刻指导项目团队前进并保证项目的质量。他坦言对于一个不写代码并且不了解最新的技术动态的技术人员或者技术团队的负责人而言,这种团队也就足够做作小项目,一旦压力和项目过大,就会有很多问题漏出来。

对于新人而言,无论学习什么技术,都要以鼓励的姿态出现。太多用薪水和你个人所看到的现状去衡量一门技术,那绝对是欠缺眼光的。任何一门技术,一旦有人学习,他有可能逐渐成为这个领域的专家,即便再滥再没有人用的开发语言技术,他也有可能就是明日的奠基者或者大师。

自己如何确定目标

在生活中学会不断挖掘自己的潜力。我们都是一个普通人,可能并不清楚自己到底在哪方面占有优势。所以,学着在生活中找到自己的优势,并根据优势选择一定的就业方向。

不随波逐流。不要看周围的人做什么,自己就做什么,也许别人做的并不适合你。别人的优势很可能会成为你的劣势。所以,坚定自己的想法,让自己知道那些方面适合自己,自己可以胜任。

不断尝试可能成为自己的优势。你不知道什么适合自己,所以才要大胆、勇敢地尝试。找到一种可以属于你的独特的优势。

坚定信念。一旦你坚定了自己的信念,就不要被别人的意见或是讽刺或是嘲笑所干扰。别人不是你,不懂的你在想什么,不清楚你开始这件事的源头。你的事情,不了解你的人,没有资格轻易评说。

不茫然,不多想。别让太多的事干扰到你奋斗下去的信念。梦想不容许太多的杂念。那些杂念只会让你的心愈来愈脆弱,多为一个人考虑,到头来,伤害的还是自己。

选择自己学习方法

每个人都有适合自己的方法,有的人去选择自学,有的人选择看视频学习,有的人选择报名培训班,那在这个时候,你就要自己考虑清楚,到底那样对的帮助是最大的,个人觉得是跟着培训班最好的,毕竟人家的实战项目多,我们学软件开发的都知道实战项目对于学好一门语言是 很重要的。

学习python有那些误区

具体里面的误区非常的多,那些就不需要我去写出来,我给你说的一般都是心态的问题,首先一个觉得自己会java和c++,然后我学习python就很牛,但是你要知道语言是有很多相同的地方,但是不是通用,一定要自己学习的仔细。还有一种就是觉得我不会英语,我要先去把英语学习好在来学python。因为自己想还坏主意然后学习,这样的都是容易找进误区的。

怎么样才能学好python

学好python你需要一个良好的环境,一个优质的开发交流群,群里都是那种相互帮助的人才是可以的,我有建立一个python学习交流群,在群里我们相互帮助,相互关心,相互分享内容,这样出问题帮助你的人就比较多,群号是483,还有546,最后是416,这样就可以找到大神聚合的群,如果你只愿意别人帮助你,不愿意分享或者帮助别人,那就请不要加了,你把你会的告诉别人这是一种分享。

如果觉得《python官网学习爬虫资料_Python爬虫学习?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。