文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python如何写出最简单的网页爬虫

2023-06-17 04:06

关注

Python如何写出最简单的网页爬虫,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

最近对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简介

ModuleIntroduce
urllib.errorException classes raised by urllib.request.
urllib.parseParse URLs into or assemble them from components.
urllib.requestExtensible library for opening URLs.
urllib.responseResponse classes used by urllib.
urllib.robotparserLoad a robots.txt file and answer questions about fetchability of other URLs.

(2)开发最简单的爬虫

百度首页简洁大方,很适合我们爬虫。

爬虫代码如下:

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()

结果如下图:

Python如何写出最简单的网页爬虫

我们可以通过在百度首页空白处右击,查看审查元素来和我们的运行结果对比。

当然,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()

运行结果如图:

Python如何写出最简单的网页爬虫

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()

运行结果如图:

Python如何写出最简单的网页爬虫

既然为了处理错误,那么***两个错误都写入代码中,毕竟越细致越清晰。须注意的是,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来查看各种错误的输出形式。

关于Python如何写出最简单的网页爬虫问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯