您的位置:首页 > 编程语言 > Python开发

python爬虫实战(1)

2020-03-06 18:19 1131 查看

python爬虫实战(1)———访问网页及更改编码格式

疫情期间在家闲着没事,找到本科时的课本,随手翻了翻还是挺有意思的。在此将自己重新学习的新感受记录下来,方便以后查阅,如能帮助到广大的初学者朋友,将是莫大的荣幸。

1.网络爬虫
网络爬虫,又称为网页蜘蛛(WebSpider),如果我们把整个互联网想象成类似于蜘蛛网一样的构造,那么这只爬虫,就是要在互联网这张大网上爬来爬去,以便捕获我们需要的资源。
我们之所以能够通过百度或者谷歌等搜索引擎检索到我们要浏览的网页,靠的就是他们大量的爬虫每天在互联网上爬来爬去,对网页中的每个关键词进行索引,建立索引数据库。经过复杂的算法进行排序后,将这些结果按照与搜索关键词的相关度高低,依此排列。
使用Python编写爬虫代码,要解决的第一个问题是:如何用python访问互联网?要解决这个问题,就要用到一个模块——urllib模块。
2.urllib模块
urllib,是URL和lib两个单词共同构成的:URL,Uniform Resource Locator,统一资源定位符,也就是我们通常所说的网页地址;lib,是library(库)的缩写,里面有很多我们需要用到的工具或是代码块。通过lib我们可以方便的调用这些工具或代码块而简化我们的代码。
URL的一般格式为(在方括号[ ]内的为可选项):protocol://hostname[port]/path/[;parameters][?query]#fragment。
URL由三部分组成:
(1)protocol(协议):常见的有http(HyperText Transfer Protocol,超文本传输协议)、https(Hyper Text Transfer Protocol over SecureSocket Layer,超文本传输安全协议)、ftp(File Transfer Protocol,文件传输协议)、file(访问本地文件夹)、ed2k(电驴的专用链接)等等。
(2)hostname:存放资源的服务器的域名系统(DNS)主机名或IP地址(有时候要包含端口号,各种传输协议都有默认的端口号,如http的默认端口为80).
(3)path:主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用“://”符号隔开,
第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的,第三部分有时可以省略,如百度的地址 : https://www.baidu.com/
Python3对urllib模块做了挺大的改动,将以前的urllib模块还有一个urllib2模块(对urllib模块的补充)合在了一起,统一叫urllib。它是一个包(package)。
打开参考文件看一下:

urllib是一个包,里边总共有四个模块。第一个模块urllib.request是最复杂的也是最重要的,因为它包含了对服务器请求的发出、跳转、代理和安全等各个方面。
先来体验一下,通过urllib.request.urlopen()函数就可以访问网页了,以编辑时的网页地址为例:

import urllib.request#导入urllib.request模块
response = urllib.request.urlopen("https://editor.csdn.net/md?articleId=104576075")#用于实现对目标url的访问
html = response.read()
print(html)

运行一下,得到如下结果:

细心的朋友们可能发现了,这跟我们在浏览器上使用“审查元素”或者按F12所看到的内容不太一样。

其实python爬取的内容是以utf-8编码的bytes对象,要还原为带中文的html代码,需要对其进行解码,将它变成Unicode编码:

html = html.decode("utf-8")
print(html)

转码之后的内容


以上就是python爬虫实战(1)———访问网页及更改编码格式的全部内容啦,第一次写博客,还很生疏,希望各位看官老爷们提出批评指正,感激不尽

  • 点赞
  • 收藏
  • 分享
  • 文章举报
xbyyg10708 发布了2 篇原创文章 · 获赞 0 · 访问量 54 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: