天才教育网合作机构 > 北京电脑培训机构 > 北京数据库培训机构 >

天才领路者

欢迎您!
朋友圈

400-850-8622

全国统一学习专线 9:00-21:00

位置:北京电脑培训资讯 > 北京数据库培训资讯 > 终于明了python入门爬虫技巧

终于明了python入门爬虫技巧

日期:2019-08-25 10:24:37     浏览:149    来源:天才领路者
核心提示:爬虫大家应该有一些了解,那就是获取网页,然后开始解析网页的链接把它们加入到队列里面,进行并发获取网页资源,有时候我们需要一个*数目的运行,实现任何时候都可以完成一个网页的获取,那么接下来我们就简单的简介一下。以下是小编为你整理的pytho

爬虫大家应该有一些了解,那就是获取网页,然后开始解析网页的链接把它们加入到队列里面,进行并发获取网页资源,有时候我们需要一个*数目的运行,实现任何时候都可以完成一个网页的获取,那么接下来我们就简单的简介一下。以下是小编为你整理的python入门爬虫技巧  

首先是书籍,通过书籍学习,虽然速度会有些慢,但知识具体,可以掌握很多细节,一旦入门后,后面进步就很快了,下面介绍给大家一本书,是以前我学习Python时用的书,感觉还挺不错哒。

python入门爬虫技巧

 

然后就是借助网络学习,网上有很多视频课程,而且有很多是免费哒,网络视频比较直观,入门快。给大家推荐一个视频,网易云课堂里有个零基础入门学习python的视频,是免费的,我之前也看过,挺不错哒  

还有就是加一些qq群或是论坛,里面的知识虽然不全面,但对于知识的扩宽还是很有帮助哒。  

*说说我的学习经验,书籍学习的方法比较扎实,网络视频学习的方法入门比较快,论坛可以作为知识的补充渠道,当然,如果想学精,唯有多多实践一条途径。  

优点是什么

Python世界最棒的地方之一,就是大量的第三方程序包。同样,管理这些包也非常容易。按照惯例,会在 requirements.txt 文件中列出项目所需要的包。每个包占一行,通常还包含版本号。这里有一个例子  

Python 程序包有一个缺陷是,它们默认会进行全局安装。我们将要使用一个工具,使我们每个项目都有一个独立的环境,这个工具叫virtualenv。我们同样要安装一个更高级的包管理工具,叫做pip,他可以和virtualenv配合工作。  

首先,我们需要安装pip。大多数python安装程序已经内置了easy_install(python默认的包管理工具),所以我们就使用easy_install pip来安装pip。这应该是你*一次使用easy_install 了。如果你并没有安装easy_install ,在linux系统中,貌似从python-setuptools 包中可以获得。  

如果你使用的Python版本高于等于3.3, 那么Virtualenv 已经是标准库的一部分了,所以没有必要再去安装它了。  

下一步,你希望安装virtualenv和virtualenvwrapper。Virtualenv使你能够为每个项目创造一个独立的环境。尤其是当你的不同项目使用不同版本的包时,这一点特别有用。Virtualenv wrapper 提供了一些不错的脚本,可以让一些事情变得容易。  

当virtualenvwrapper安装后,它会把virtualenv列为依赖包,所以会自动安装。  

打开一个新的shell,输入mkvirtualenv test 。如果你打开另外一个shell,则你就不在这个virtualenv中了,你可以通过workon test 来启动。如果你的工作完成了,可以使用deactivate 来停用。  

循环语句的应用

举个例子如果我们要生产一个list [1,2,3,4,5,6,7,8,9,10] 我们可以使用range(1,11)来表示,如果直接写range(11) 是从0开始,我们可以演示一下。print range(11)print range(1,11)print range(8,11)  

然后我们想一下 如果要表示[1*1,2*2,3*3,4*4.....100*100]要怎么做呢?好肯定是要利用到循环的概念,正常的写法是这样的:  

a = [] #定义一个空的列表for x in range(1,101): #假设X在从1开始循环到100 a.append(x * x) # 进行一次添加操作 x* xprint a

 

作为一个程序员,就要是使用最短的代码*效的完成程序表达的功能,如果使用循环写的话会感觉比较繁琐,特别是逻辑能力不太强的朋友,我们可以使用一行语句代替循环,我们测试看看  

print [x * x for x in range(1,101)]  

当然除了计算之外,我们还可以做一些比较特殊的字符串操作,比如:  

print [m + n for m in 'ABC' for n in 'XYZ']  

我们可以看到我们把A B C 都加了一遍XYZ 如果要用正常的循环也是可以完成的就是了,这样的操作更加简单便捷。  

 

Python标准库中

首先使用Python标准库中的同步队列,每次有新的一项加入,队列增加它的tasks计数器,线程完成一个任务后调用task_done,主线程阻塞在Queue.join,直到tasks计数器与task_done调用次数相匹配,导入线程。  

然后把线程的共享状态收集在一个名为crawler的类中,主要的逻辑写在crawl方法中,在一个协程中启动crawl运行asyncio的事件循环直到crawl完成。  

接着使用crawler线程,用一个根URL和*重定向数max_redirect来初始化,它把 URL, max_redirect序列对放入队列中。  

在队列中未完成的任务数是输出1,然后回到主程序里面,启动事件循环和crawl方法,crawl协程把worker们赶起来干活,它像一个主线程阻塞在join上直到所有任务完成,同时worker在后台运行。  

接下来如果worker是线程,可能不会一次把它们全部创建出来,为了避免创建线程的昂贵代价,通常一个线程池会按需增长,但是协程很廉价,可以直接把他们全部创建出来。  

*生成器被throw抛出一个异常,如过生成器的调用堆栈中没有捕获异常的代码,这个异常被传递到顶层,所以注销协程任何时候生成器暂停,在某些yield from语句它恢复并且抛出一个异常处理注销。

如果本页不是您要找的课程,您也可以百度查找一下: