
Python网络爬虫案例实战
文章平均质量分 70
Python爬虫技术提升
andyyah晓波
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python网络爬虫案例实战:并发与 Web:线程
在Python 中使用线程有两种方式:函数或者用类来包装线程对象。第一种:函数式,调用 thread 模块中的 start_new_thread()函数来产生新线程。线程的结束一般依靠线程函数的自然结束;也可以在线程函数中调用thread.exit(),它抛出 SystemExit exception,达到退出线程的目的。原创 2024-08-13 17:57:37 · 1355 阅读 · 0 评论 -
Python网络爬虫案例实战:并发与 Web:并发和并行、同步和异步、阻塞与非阻塞
Python 支持的并发分为多进程并发与多线程并发。概念上来说,多进程并发即运行多个独立的程序,优势在于并发处理的任务都由操作系统管理,不足之处在于程序与各进程之间的通信和数据共享不方便;多线程并发则由程序员管理并发处理的任务,这种并发方式可以方便地在线程间共享数据(前提是不能互斥)。Python对多进程和多线程的支持都比一般编程语言更高级,最大限度地减少了需要我们完成的工作。原创 2024-08-13 15:21:13 · 745 阅读 · 0 评论 -
Python网络爬虫案例实战:解析网页:Ixml解析网页
lxml是一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML数据。1xml和正则表达式一样,也是用C实现的,是一款高性能的Python HTML/XML解析器,可以利用之前学习的XPath语法,来快速定位特定元素以及节点信息。原创 2024-08-13 14:27:10 · 999 阅读 · 0 评论 -
Python网络爬虫案例实战:解析网页:PyQuery 解析库
前面介绍了BeautifulSoup 的用法,它是一个非常强大的网页解析库,你是否觉得它的一些方法用起来有点不适用?有没有觉得它的CSS选择器的功能没有那么强大?下面来介绍一个更适合的解析库—PyQuery。PyQuery库是jQuery的Python实现,能够以jQuery的语法来操作解析HTML 文档,易用性和解析速度都很好,使用起来还是可以的,有些地方用起来很方便简洁。原创 2024-08-13 12:05:08 · 1737 阅读 · 0 评论 -
Python网络爬虫案例实战:解析网页:BeautifulSoup 解析网页
首先介绍BeautifulSoup的对象种类,常用的有标签(bs4.element.Tag)以及文本(bs4.element.NavigableString)等,其中,注解等对象不常用,在此不展开介绍。在标签对象上,可以调用一些查找方法例如find_all等,还有一些属性返回标签的父节点、兄弟节点、直接子节点、所有子节点等。所以如果要爬这样的网站,首先需要把请求伪装成浏览器的样子。具体网站具体分析,经过测试,糗事百科只要设置了UA 就可以爬取到内容,对于其他网站,你需要测试一下才能确定什么设置可用。原创 2024-08-12 17:13:59 · 1575 阅读 · 0 评论 -
Python网络爬虫案例实战:解析网页:正则表达式解析网页
正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言中,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。图5-1展示了使用正则表达式进行匹配的流程。正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。原创 2024-08-12 14:20:12 · 1344 阅读 · 0 评论 -
Python网络爬虫案例实战:动态网页爬取:selenium爬取动态网页
利用“审查元素”功能找到源地址十分容易,但是有些网站非常复杂。除此之外,有一些数据真实地址的URL 也十分冗长和复杂,有些网站为了规避这些爬取会对地址进行加密。因此,在此介绍另一种方法,即使用浏览器渲染引擎,直接用浏览器在显示网页时解析HTML,应用CSS样式并执行JavaScript的语句。此方法在爬虫过程中会打开一个浏览器,加载该网页,自动操作浏览器浏览各个网页,顺便把数据抓下来。通俗地说,就是使用浏览器渲染方法,将爬取动态网页变成了爬取静态网页。原创 2024-08-12 11:04:09 · 1872 阅读 · 0 评论 -
Python网络爬虫案例实战:动态网页爬取:什么是Ajax
Ajax(Asynchronous JavaScript and XML)异步JavaScript和XML,即异步的JavaScript 和XML。它不是一门编程语言,而是利用JavaScript在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。对于传统的网页,如果想更新其内容,那么必须要刷新整个页面,但有了Ajax,便可以在页面不被全部刷新的情况下更新其内容。原创 2024-08-12 09:38:18 · 1129 阅读 · 0 评论 -
Python网络爬虫案例实战:动态网页爬取:动态爬取淘宝网实例
之前爬取的网页均为静态网页,这样的网页在浏览器中展示的内容都在HTML 源代码中。但是,由于主流网站都使用JavaScript展现网页的内容,和静态网页不同的是,在使用JavaScript时,很多内容并不会出现在HTML 源代码中,所以爬取静态网页的技术可能无法正确使用。2088802741478045&.biz_order_id=454980960323929555#RateIframe,如图4-1所示,其中的待评论数据就是用JavaScript加载的,这些评论数据不会出现在网页源代码中。原创 2024-08-11 03:45:55 · 292 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:Requests爬虫实践
至此,已经介绍了利用爬虫网络对静态网页进行爬取,下面直接通过两个实例来演示爬虫的实践。原创 2024-08-11 03:38:42 · 2435 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:自定义请求头部
【代码】Python网络爬虫案例实战:静态网页爬取:自定义请求头部。原创 2024-08-11 02:06:48 · 196 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:代理访问
采集时为避免被封IP,经常会使用代理。Requests也有相应的proxies属性。原创 2024-08-11 01:52:52 · 274 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:设置超时
有时爬虫会遇到服务器长时间不返回,这时爬虫程序就会一直等待,造成爬虫程序没能顺利地执行。因此,可以用 Requests在 timeout参数设定的秒数结束之后停止等待响应。也就是说,如果服务器在timeout 秒内没有应答,就返回异常。把这个秒数设置为0.001秒,看看会抛出什么异常,这是为了让大家体验timeout异常的效果而设置的值,一般会把这个值设置为20秒。原创 2024-08-11 01:33:59 · 217 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:发送POST请求
除了GET请求外,有时还需要发送一些编码为表单形式的数据,如在登录的时候请求就为POST,因为如果用 GET请求,密码就会显示在URL 中,这是非常不安全的。如果要实现POST请求,那么只需要简单地传递一个字典给Requests中的data参数,这个数据字典就会在发出请求的时候自动编码为表单形式。可以看到,form变量的值为key_dict输入的值,这样一个POST请求就发送成功了。原创 2024-08-11 01:25:27 · 398 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:定制请求头
请求头 Headers提供了关于请求、响应或其他发送实体的信息。对于爬虫而言,请求头十分重要,尽管在上一个例子中并没有制定请求头。如果没有指定请求头或请求的请求头与实际网页不一致,就可能无法返回正确的结果。Requests并不会基于定制的请求头 Headers的具体情况改变自己的行为,只是在最后的请求中,所有的请求头信息都会被传递进去。由结果可以看到是以字典的形式返回了全部内容,也可以访问部分内容。而请求头内容可以用r.request.headers来获取。原创 2024-08-09 19:55:00 · 415 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:获取网页编码
在Requests中,可以用r.status_code来检查网页的状态码。能正常打开的返回200,不能正常打开的返回404。原创 2024-08-09 18:28:36 · 240 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:获取响应内容
r.content是以字节的方式去显示,所以在IDLE 中以b开头。但在cygwin 中用起来并没有,下载网页正好,所以就替代了urllib2的urllib2.urlopen(url).read()功能。在 Requests中,还会自动将内容转码,大多数 unicode字体都会无缝转码。此外,还可以通过r.content来获取页面内容。在Requests中,可以通过r.text来获取网页的内容。原创 2024-08-09 18:11:16 · 282 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:传递URL参数
为了请求特定的数据,需要在 URL的查询字符串中加入某些数据。如果你是自己构建URL,那么数据一般会跟在一个问号后面,并且以键-值的形式放在 URL 中,如http://httpbin.org/get?在 Requests中,可以直接把这些参数保存在字典中,用params构建至URL中。原创 2024-08-09 18:01:19 · 390 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:JSON数据库
JSON 全称为JavaScript Object Notation,也就是JavaScript对象标记,它通过对象和数组的组合来表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。下面进行简单的介绍,第7章将对其进行详细介绍。原创 2024-08-09 17:45:51 · 293 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:获取响应内容
在Python 中,当发送请求时,Requests 会根据HTTP头部来猜测网页编码,当使用r.text时,Requests就会使用这个编码。当然你还可以修改 Requests的编码形式。在Python爬虫网络中,可以使用r.encoding获取网页编码。原创 2024-08-09 17:22:06 · 218 阅读 · 0 评论 -
Python网络爬虫案例实战:静态网页爬取:Requests的安装
在网站设计中,纯粹HTML(标准通用标记语言下的一个应用)格式的网页通常被称为“静态网页”。静态网页是相对于动态网页而言的,是指没有后台数据库、不含程序和不可交互的网页。静态网页的更新相对比较麻烦,适用于一般更新较少的展示型网站。容易让人产生误解的是静态页面都是HTML这类页面,实际上静态也不是完全静态,它也可以出现各种动态的效果,如GIF 格式的动画、Flash、滚动字幕等。在网络爬虫中,静态网页的数据比较容易获取,因为所有数据都呈现在网页的HTML代码中。原创 2024-08-09 15:49:19 · 413 阅读 · 0 评论 -
Python网络爬虫案例实战:Web前端
对应的标准也分为3方面。CSS样式表的目的是为了解决内容与表现分离的问题,即使同一个HTML文档也能表现出外观的多样化。Web前端的知识范围非常广泛,不可能全面和深入地展开介绍,本节主要抽取Web前端中和爬虫相关的知识点进行介绍,为之后的Python 爬虫开发打下基础。内容--HTML 文档由包裹,这是HTML 文档的文档标记,也称为HTML开始标记。这对标记分别位于网页的最前端和最后端,在最前端表示网页的开始,在最后端表示网页的结束。内容---HTML文件头标记,也称为HTML头信息开始标记。原创 2024-08-08 15:09:56 · 1142 阅读 · 0 评论 -
Python网络爬虫案例实战:Python平台
面向对象技术主要有:● 类(Class):用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。● 方法:类中定义的函数。● 类变量:类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用。● 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。● 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。原创 2024-08-08 14:40:57 · 1223 阅读 · 0 评论 -
Python网络爬虫案例实战:爬虫网络概述-代理的基本原理
在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常爬取数据,一切看起来都是那么美好,然而喝一杯茶的工夫可能就会出现错误,比如403Forbidden,这时候打开网页一看,可能会看到“您的IP访问频率太高”这样的提示。出现这种现象的原因是网站采取了一些反爬虫措施。比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。原创 2024-08-08 09:37:24 · 1168 阅读 · 0 评论 -
Python网络爬虫案例实战:爬虫网络概述-会话和 Cookie
在浏览网站的过程中,经常会遇到需要登录的情况,有些页面只有登录后才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。还有些网站,在打开浏览器时就自动登录了,而且很长时间都不会失效,这又是为什么呢?其实涉及会话(Session)和 Cookie的相关知识,下面将揭开它们神秘的面纱。原创 2024-08-08 09:31:01 · 1211 阅读 · 0 评论 -
Python网络爬虫案例实战:爬虫网络概述-爬虫网络更新策略
前面提到的两种更新策略都有一个前提一–需要网页的历史信息。第二,要是新的网页完全没有历史信息,就无法确定更新策略。这种策略认为,网页具有很多属性,类似属性的网页,可以认为其更新频率也是类似的。要计算某一个类别网页的更新频率,只需要对这一类网页抽样,以它们的更新周期作为整个类别的更新周期。因此,爬取系统可以优先更新那些显示在查询结果前几页中的网页,而后再更新那些后面的网页。用户体验策略保留网页的多个历史版本,并且根据过去每次内容变化对搜索质量的影响,得出一个平均值,通过这个值决定何时重新爬取。原创 2024-08-08 09:20:47 · 814 阅读 · 0 评论 -
Python网络爬虫案例实战:爬虫网络概述-爬取策略
Partial PageRank算法借鉴了PageRank算法的思想:对于已经下载的网页,连同待爬取URL 队列中的URL,形成网页集合,计算每个页面的PageRank值,计算完之后,将待爬取URL队列中的URL 按照 PageRank值的大小排列,并按照该顺序爬取页面。宽度优先遍历策略的基本思路是:将新下载网页中发现的链接直接插入待爬取URL 队列的末尾。也就是指网络爬虫会先爬取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续爬取在此网页中链接的所有网页,还是以图1-16为例。原创 2024-08-08 09:16:39 · 683 阅读 · 0 评论 -
Python网络爬虫案例实战:爬虫网络概述-网络爬虫技术
网络爬虫(Web Crawler)按照一定的规则,自动地爬取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。下面通过图1-11展示一下网络爬虫在互联网中起到的作用。网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。原创 2024-08-08 08:00:02 · 1365 阅读 · 0 评论 -
Python网络爬虫案例实战:爬虫网络概述-网络爬虫合法性
网络爬虫合法吗?网络爬虫目前还属于早期的拓荒阶段,虽然互联网世界已经通过自身的协议建立了一定的道德规范(Robots 协议),但法律部分还在建立和完善中。从目前的情况来看,如果爬取的数据属于个人或科研范畴,基本不存在问题;而如果数据属于商业盈利范畴,就要就事而论,有可能属于违法行为,也有可能不违法。原创 2024-08-08 01:48:01 · 1520 阅读 · 0 评论 -
Python网络爬虫案例实战:爬虫网络概述-网页基础
用浏览器访问网站时,页面各不相同,有没有想过它为何会是这个样子呢?下面就了解一下网页的基本组成、结构和节点等内容。原创 2024-08-07 14:40:08 · 1080 阅读 · 0 评论 -
Python网络爬虫案例实战:爬虫网络概述-HTTP基本原理
在互联网软件开发工程师的分类中,爬虫工程师是非常重要的。爬虫工作往往是一个公司核心业务开展的基础,数据抓取下来,才有后续的加工处理和最终展现。此时数据的抓取规模、稳定性、实时性、准确性就显得非常重要。早期的互联网充分开放互联,数据获取的难度很小。随着各大公司对数据资源日益看重,反爬水平也不断提高,各种新技术不断给爬虫软件提出新的课题。在写爬虫之前,需要了解一些基本知识,如HTTP原理、网页的基础知识、爬虫的基本原理、Cookies基本原理等。原创 2024-08-07 10:42:39 · 1467 阅读 · 0 评论