python 网络爬虫.docx

上传人:小** 文档编号:87217246 上传时间:2019-03-29 格式:DOCX 页数:64 大小:726.18KB
返回 下载 相关 举报
python 网络爬虫.docx_第1页
第1页 / 共64页
python 网络爬虫.docx_第2页
第2页 / 共64页
python 网络爬虫.docx_第3页
第3页 / 共64页
python 网络爬虫.docx_第4页
第4页 / 共64页
python 网络爬虫.docx_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《python 网络爬虫.docx》由会员分享,可在线阅读,更多相关《python 网络爬虫.docx(64页珍藏版)》请在金锄头文库上搜索。

1、抓取网页的含义和URL基本构成1、网络爬虫的定义网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。网络爬虫的基本操作是抓取网页。那么如何才能随心所欲地获得自己想要的页面

2、?我们先从URL开始。2、浏览网页的过程抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的。比如说你在浏览器的地址栏中输入 这个地址。打开网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释、展现。HTML是一种标记语言,用标签标记内容并加以解析和区分。浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接看到的网站页面。3、URI的概念和举例简单的来讲,URL就是在浏览器端输入的 这个字符串。在理解URL之前,首先要理解URI的概念。什么是URI?Web上每种可用的资源,如 HTML文档

3、、图像、视频片段、程序等都由一个通用资源标志符(Universal Resource Identifier, URI)进行定位。URI通常由三部分组成:访问资源的命名机制;存放资源的主机名;资源自身 的名称,由路径表示。如下面的URI:http:/ 上,通过路径“/html/html40”访问。4、URL的理解和举例URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地

4、址和目录等。URL的格式由三部分组成:第一部分是协议(或称为服务方式)。第二部分是存有该资源的主机IP地址(有时也包括端口号)。第三部分是主机资源的具体地址,如目录和文件名等。第一部分和第二部分用“:/”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。下面来看看两个URL的小例子。1.HTTP协议的URL示例:使用超级文本传输协议HTTP,提供超级文本信息服务的资源。例:http:/ /channel下的welcome.htm。这是中国人民日报的一台计算机。例:http:/ 径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不

5、能省略。例:file:/ 进行进一步的处理。因此,准确地理解URL对理解网络爬虫至关重要。利用urllib2通过指定的URL抓取网页内容所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源。在Python中,我们使用urllib2这个组件来抓取网页。urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。它以urlopen函数的形式提供了一个非常简单的接口。最简单的urllib2的应用代码只需要四行。我们新建

6、一个文件urllib2_test01.py来感受一下urllib2的作用:pythonview plaincopy1. importurllib22. response=urllib2.urlopen(http:/ html=response.read()4. printhtml按下F5可以看到运行的结果:我们可以打开百度主页,右击,选择查看源代码(火狐OR谷歌浏览器均可),会发现也是完全一样的内容。也就是说,上面这四行代码将我们访问百度时浏览器收到的代码们全部打印了出来。这就是一个最简单的urllib2的例子。除了http:,URL同样可以使用ftp:,file:等等来替代。HTTP是基于请

7、求和应答机制的:客户端提出请求,服务端提供应答。urllib2用一个Request对象来映射你提出的HTTP请求。在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。我们新建一个文件urllib2_test02.py来感受一下:pythonview plaincopy1. importurllib22. req=urllib2.Request(http:/)3. response=urllib2.urlopen

8、(req)4. the_page=response.read()5. printthe_page可以看到输出的内容和test01是一样的。urllib2使用相同的接口处理所有的URL头。例如你可以像下面那样创建一个ftp请求。pythonview plaincopy1. req=urllib2.Request(ftp:/ plaincopy1. importurllib2. importurllib23. 4. url=http:/ 6. values=name:WHY,7. location:SDU,8. language:Python9. 10. data=urllib.urlencode

9、(values)#编码工作11. req=urllib2.Request(url,data)#发送请求同时传data表单12. response=urllib2.urlopen(req)#接受反馈的信息13. the_page=response.read()#读取反馈的内容如果没有传送data参数,urllib2使用GET方式的请求。GET和POST请求的不同之处是POST请求通常有副作用,它们会由于某种途径改变系统状态(例如提交成堆垃圾到你的门口)。Data同样可以通过在Get请求的URL本身上面编码来传送。pythonview plaincopy1. importurllib22. imp

10、orturllib3. 4. data=5. 6. dataname=WHY7. datalocation=SDU8. datalanguage=Python9. 10. url_values=urllib.urlencode(data)11. printurl_values12. 13. name=Somebody+Here&language=Python&location=Northampton14. url=http:/ full_url=url+?+url_values16. 17. data=urllib2.open(full_url)这样就实现了Data数据的Get传送。2.设置Headers到http请求有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内容到不同的浏览器。默认的urllib2把自己作为“Python-urllib/x.y”(x和y是Python主版本和次版本号,例如Python-urllib/2.7),这个身份可能会让站点迷惑,或者干脆不工作。浏览器确认自己身份是通过User-Agent头,当你创建了一个请求对象,你可以给他一个包含头数据的字典。下面的例子发送跟上面一样的内容,但把自身模拟成Internet Explorer。pythonview plaincopy1. importurllib2. impo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号