初见网络爬虫

一、网络连接

'''输出http://pythonscraping.com/pages/page1.html这个网页的全部HTML代码'''
from urllib.request import urlopen
html = urlopen("http://pythonscraping.com/pages/page1.html")
print(html.read())

二、BeautifulSoup简介

'''从网页中提取<h1>标签'''
from urllib.request import openurl
from bs4 import BeautifulSoup
html = urlopen("http://pythonscraping.com/pages/page1.html")
bsObj = Beautiful(html.read())  # 创建BeautifulSoup实例对象
print(bsObj.h1)  # bsObj.html.body.h1 or bsObj.body.h1 or bsObj.html.h1

可靠的网络连接

urlopen("http://pythonscraping.com/pages/page1.html")

这行代码主要可能会发生两种异常:
- 网页在服务器上不存在(或者获取页面的时候出现错误)(HTTPError异常)
- 服务器不存在(返回None对象)

即使网页已经从服务器成功获取,在使用BeautifulSoup解析网页时,如果你想要调用的标签不存在,BeautifulSoup就会返回None对象,不过,如果再调用这个None对象下面的子标签,就会发生AttributeError错误

from urllib.request import urlopen
from urllib.error import HTTPError, URLError
from bs4 import BeautifulSoup

def getTitle(url):
    try:
        html = urlopen(url)
    except (HTTPError, URLError) as e:  # 网页上的服务器不存在,或者获取页面的时候出现错误
        return None
    try:
        bsObj = BeautifulSoup(html.read())
        title = bsObj.body.h1
    except AttributeError as e: # 如果服务器不存在,html就是一个None对象,html.read()就会抛出AttributeError
        return None
    return title

title = getTitle("http://pythonscraping.com/pages/page1.html")
if title == None:
    print("Title could not be found")
else:
    print(title)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值