入门七天,如何用十几行python代码爬取百度首页

匆匆过客 提交于 2020-02-25 19:50:20

这个爬虫很简单,只要稍微了解urllib库就可以写出来。urllib库在 python2和python3上有很大的区别,python2有urllib和urllib2两个库,Python3中将python2的urllib和urllib2两个库合并成了一个urllib库,而且不需要自己去安装,只要下载python3就已经自带了这库。

urllib简介:

urllib提供了一系列用于操作URL的功能的库,其主要包括以下模块。

urllib.request 请求模块

urllib.error 异常处理模块

urllib.parse url解析模块

urllib.robotparser robots.txt解析模块

urllib.request 请求模块

直接用urllib.request模块的urlopen( )获取页面,date的数据格式为bytes类型,需要decode( )解码,转换成str类型。

urillib的参数及解释:

url: 需要打开的网址

data:Post提交的数据

timeout:设置网站的访问超时时间

context 参数:它必须是 ssl.SSLContext 类型,用来指定 SSL 设置。

cafile 和 capath 两个参数:是指定CA证书和它的路径,这个在请求 HTTPS 链接时会有用。

cadefault 参数:现在已经弃用了,默认为 False

urlopen返回对象提供方法:

read() , readline() ,readlines() , fileno() , close() :对HTTPResponse类型数据进行操作。

info():返回HTTPMessage对象,表示远程服务器返回的头信息。

getcode():返回Http状态码。http请求是200请求成功; 404网址未找到。

geturl():返回请求的url。

添加头部文件

有些网页为了防止别人恶意采集其信息所以进行了一些反爬虫的设置,而我们又想进行爬取。

解决方法:设置一些Headers信息(User-Agent),模拟成浏览器去访问这些网站。

写入到文本的结果:

通过代码我们可以看出urlopen不再是传递url了,而是一个 request。这样一来我们不再把请求当成一个独立对象,而且能更加灵活方便的配置访问参数。把page的数据格式是bytes类型,用decode转换成str类型,并写入到 'baidu.txt文件'。

urllib.error 异常处理模块

用try-except来捕捉异常,主要的错误方式就两种 URLError(错误信息)和HTTPError(错误编码)。

urllib.parse url解析模块

urllib.parse.urlparse

入门七天,如何用十几行python代码爬取百度首页

这里可以看出是把你传入的url地址进行拆分,同时我们是可以指定协议类型:

result = urlparse("www.baidu.com/index.html;user?id=5#comment",scheme="https")

这样拆分的时候协议类型部分就会是你指定的部分,当然如果你的url里面已经带了协议,你再通过scheme指定的协议就不会生效。

urllib.parse.urlunparse

urlunparse功能和urlparse的功能相反,它是用于拼接。

urllib.parse.urljoin;

通过结果可以看出urljion功能主要是拼接用的。

urllib.parse.urlencode;

parse.urlencode方法可以将字典转换为url参数。

专门建立的Python学习扣QUN:⑦⑧④⑦⑤⑧②①④ 从零基础开始到Python各领域的项目实战教程、开发工具与电子书籍。与你分享企业当下对于python人才需求及学好python的高效技巧,不停更新最新教程!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!