HTML代码的获取
在一般的数据爬取中,HTML代码是很重要的一部分,获取到了网页的HTML代码,我们就能够从中提取出我们所需要的数据,我们先来通过一段简单的代码来看一下如何获取HTML代码:
from urllib.request import urlopen
html = urlopen("在此输入想要获取的网页地址")
print(html.read())
获取代码的时候我们使用了一个Python标准库urllib,这个库不仅可以从网络请求数据,处理 cookie,还可以改变像请求头和用户代理这些元数据。
定位HTML标签
“美味的汤,绿色的浓汤,
在热气腾腾的盖碗里装!
谁不愿意尝一尝,这样的好汤?
晚餐用的汤,美味的汤!”
这首诗歌就是我们今天要使用的BeautifulSoup库的由来,BeautifulSoup可以通过定位 HTML 标签来格式化和组织复杂的网络信息,用简单易用的 Python 对象为我们展现 XML 结构信息。
BeautifulSoup安装
Python中的BeautifulSoup分为很多的版本,我们直接安装最新的BeautifulSoup4(BS4)就可以了。
pip install beautifulsoup4
安装成功后使用下面的代码进行测试,如果不出错就证明安装成功了。
from bs4 import BeautifulSoup
BeautifulSoup使用
BeautifulSoup中最长使用的对象就是BeautifulSoup对象,最简单的我们可以获取HTML代码中的h1标签:
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("在此输入想要获取的网页地址")
bs = BeautifulSoup(html)
bs.h1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yl7nUL4-1607844534084)(/Users/seven/myfolder/西瓜书笔记/python爬虫/BS1.jpg)]
和h1标签一样,如果想要获取其他标签的内容我们呢只需要更改引用的对象就可以了。
异常处理
爬取数据的过程中,我们难免会遇到各种各样的问题,比如:网络服务器宕机、网页数据格式不友好、目标数据的标签找不到,这些问题总是让我们的程序直接出错而导致无法运行,下面让我们来看一下在各种异常情况下常见的操作有哪些。
获取HTML的异常
html = urlopen("在此输入想要获取的网页地址")
当我们运行获取HTML的代码时,肯能会发生两种异常:
-
网页在服务器上不存在(或者获取页面的时候出现错误)
-
服务器不存在
通常,在出现这些异常的时候urlopen函数都会抛出“HTTPError”异常,此时我们就可以把我们不是很常用的try…except…拿来用了:
try:
html = urlopen("在此输入想要获取的网页地址")
except HTTPError as e:
print(e)
# 返回空值,中断程序,或者执行另一个方案
else:
# 编写你在当前情况下想做的事
pass
当遇到服务器不存在的时候,urlopen会返回一个None,此时我们就可以进行下面的操作:
html = urlopen("在此输入想要获取的网页地址")
if html is None:
print("URL is not found")
else:
pass
对于其他的异常,我们根据上述的两种方式去套用就可以了。
总结
通过这些简单的操作,我们就可以进行简单的数据获取了,有没有一种听起来“难如登天”,写起来“简简单单”的感觉。其实爬虫需要注意和掌握的内容还有很多,先关注一下,爬虫干货随后就来。