python读取网站_Python读取网页并获取某节点

这篇博客介绍了如何利用Python的BeautifulSoup库从网页抓取数据。Beautiful Soup自动处理编码问题,提供灵活的解析策略。文章展示了安装过程,通过urlopen获取网页内容,然后用BeautifulSoup解析HTML,尝试获取body内的h1标题,并处理可能的AttributeError异常,确保爬虫在遇到不存在的节点时仍能继续工作。
摘要由CSDN通过智能技术生成

环境:python3.5.1

Beautiful Soup

Beautiful Soup是python的一个库,主要用于从网页抓取数据。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

Beautiful Soup已经成为和xml,html6lib一样出色的python解释器,为用户灵活提供不同的解析策略或强劲的速度。

由于Beautiful Soup不是python内置库,所以需要下载安装

pip install beautifulsoup4

代码使用:

from urllib.request import urlopen

from urllib.error import URLError

from bs4 import BeautifulSoup

def getTitle(url):

try:

html = urlopen(url)

except URLError as e:

print(e)

return None

try:

bsObj = BeautifulSoup(html, "html.parser")

title = bsObj.body.h1

except AttributeError as e:

return None

return title

title = getTitle("http://www.xxxxxxx.com")

if title == None:

print("Title could not be found")

else:

print(title)

我们经常会将自己写的网络爬虫开启,然后信心满满地去休息,等第二天打开发现,爬虫早已停止运行,我门需要的数据并没有成功获取,因为程序已经中断退出了。在爬虫执行时,某些html可能不存在了,或者发生了变化,html中某个节点不存在了。 对于这些情况,爬虫会发生异常并退出,为了让爬虫继续工作,我们需要捕获异常,如以上代码。

注意,当html中没有某一节点,如

节点,我门使用bsObj.pre来获取该节点时,并不会发生异常,而是返回"None".

但是当我门要获取

的下一节点

时,bsObj.pre.p时会出现异常:AttributeError。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值