摘要:开发最简单的爬虫简介开发最简单的爬虫百度首页简洁大方,很适合我们爬虫。爬虫代码如下结果如下图我们可以通过在百度首页空白处右击,查看审查元素来和我们的运行结果对比。
知识就像碎布,记得“缝一缝”,你才能华丽丽地亮相
最近对python爬虫有了强烈地兴趣,在此分享自己的学习路径,欢迎大家提出建议。我们相互交流,共同进步。1.开发工具
笔者使用的工具是sublime text3,它的短小精悍(可能男人们都不喜欢这个词)使我十分着迷。推荐大家使用,当然如果你的电脑配置不错,pycharm可能更加适合你。 sublime text3搭建python开发环境推荐查看此博客: [sublime搭建python开发环境][http://www.cnblogs.com/codefish/p/4806849.html]2.爬虫介绍
爬虫顾名思义,就是像虫子一样,爬在Internet这张大网上。如此,我们便可以获取自己想要的东西。 既然要爬在Internet上,那么我们就需要了解URL,法号“统一资源定位器”,小名“链接”。其结构主要由三部分组成: (1)协议:如我们在网址中常见的HTTP协议。 (2)域名或者IP地址:域名,如:www.baidu.com,IP地址,即将域名解析后对应的IP。 (3)路径:即目录或者文件等。3.urllib开发最简单的爬虫 (1)urllib简介
Module | Introduce |
---|---|
urllib.error | Exception classes raised by urllib.request. |
urllib.parse | Parse URLs into or assemble them from components. |
urllib.request | Extensible library for opening URLs. |
urllib.response | Response classes used by urllib. |
urllib.robotparser | Load a robots.txt file and answer questions about fetchability of other URLs. |
百度首页简洁大方,很适合我们爬虫。 爬虫代码如下:
from urllib import request def visit_baidu(): URL = "http://www.baidu.com" # open the URL req = request.urlopen(URL) # read the URL html = req.read() # decode the URL to utf-8 html = html.decode("utf_8") print(html) if __name__ == "__main__": visit_baidu()
结果如下图:
我们可以通过在百度首页空白处右击,查看审查元素来和我们的运行结果对比。 当然,request也可以生成一个request对象,这个对象可以用urlopen方法打开。 代码如下:
from urllib import request def vists_baidu(): # create a request obkect req = request.Request("http://www.baidu.com") # open the request object response = request.urlopen(req) # read the response html = response.read() html = html.decode("utf-8") print(html) if __name__ == "__main__": vists_baidu()
运行结果和刚才相同。(3)错误处理
错误处理通过urllib模块来处理,主要有URLError和HTTPError错误,其中HTTPError错误是URLError错误的子类,即HTTRPError也可以通过URLError捕获。 HTTPError可以通过其code属性来捕获。 处理HTTPError的代码如下:
from urllib import request from urllib import error def Err(): url = "https://segmentfault.com/zzz" req = request.Request(url) try: response = request.urlopen(req) html = response.read().decode("utf-8") print(html) except error.HTTPError as e: print(e.code) if __name__ == "__main__": Err()
运行结果如图:
404为打印出的错误代码,关于此详细信息大家可以自行百度。 URLError可以通过其reason属性来捕获。 chuliHTTPError的代码如下:
from urllib import request from urllib import error def Err(): url = "https://segmentf.com/" req = request.Request(url) try: response = request.urlopen(req) html = response.read().decode("utf-8") print(html) except error.URLError as e: print(e.reason) if __name__ == "__main__": Err()
运行结果如图:
既然为了处理错误,那么最好两个错误都写入代码中,毕竟越细致越清晰。须注意的是,HTTPError是URLError的子类,所以一定要将HTTPError放在URLError的前面,否则都会输出URLError的,如将404输出为Not Found。 代码如下:
from urllib import request from urllib import error # 第一种方法,URLErroe和HTTPError def Err(): url = "https://segmentfault.com/zzz" req = request.Request(url) try: response = request.urlopen(req) html = response.read().decode("utf-8") print(html) except error.HTTPError as e: print(e.code) except error.URLError as e: print(e.reason)
大家可以更改url来查看各种错误的输出形式。
新人初来乍到不容易,如果您觉得有那么一丢丢好的话,请不要吝啬您的赞赏~撒花。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/40704.html
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:在这之前,还是有必要对一些概念超轻量级反爬虫方案后端掘金前言爬虫和反爬虫日益成为每家公司的标配系统。 爬虫修炼之道——从网页中提取结构化数据并保存(以爬取糗百文本板块所有糗事为例) - 后端 - 掘金欢迎大家关注我的专题:爬虫修炼之道 上篇 爬虫修炼之道——编写一个爬取多页面的网络爬虫主要讲解了如何使用python编写一个可以下载多页面的爬虫,如何将相对URL转为绝对URL,如何限速,...
摘要:内存池机制提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。为了加速的执行效率,引入了一个内存池机制,用于管理对小块内存的申请和释放。 注:答案一般在网上都能够找到。1.对if __name__ == main的理解陈述2.python是如何进行内存管理的?3.请写出一段Python代码实现删除一个list里面的重复元素4.Python里面如何拷贝一个对象?...
阅读 1563·2023-04-25 16:29
阅读 933·2021-11-15 11:38
阅读 2261·2021-09-23 11:45
阅读 1358·2021-09-22 16:03
阅读 2519·2019-08-30 15:54
阅读 1180·2019-08-30 10:53
阅读 2565·2019-08-29 15:24
阅读 1058·2019-08-26 12:25