Python网络数据采集(1)——获取网页源码
2018-01-08 16:10
621 查看
from bs4 import BeautifulSoup from urllib.request import urlopen html = urlopen("http://www.baidu.com/") text = BeautifulSoup(html.read(), "html.parser") print(text)
《Python网络数据采集》原书上第四段代码写的是BeautifulSoup(html.read()),这样写可能会出现一个报错:
UserWarning: No parser was explicitly specified To get rid of this warning, change this: BeautifulSoup([your markup]) to this: BeautifulSoup([your markup], “html.parsar”) markup_type=markup_type))
这是因为没有指定网页解析工具,在不同的操作系统中,未指定网页解析工具,python可能会根据系统的系统自己选择不同的网页解析工具,那么有些写出来的代码就可能导致报错或警告。根据python提示的改法,我们可以加上”html.parser”
一、介绍使用的库
1、urllib
urllib提供一系列用于操作URL的功能,其中urllib的request模块可以菲方方便的抓取URL内容,也就是发送一个GET/POST请求到指定页面,然后返回HTTP的响应;通过urllib模块,可以把请求伪装成浏览器。
urllib是Python的标准库,包含从网络请求数据、处理cookie、改变请求头和用户代理这些元数据的函数
注:在python2有urllib和urllib2两个库,而python3中urllib2已改为urllib,被分成几个子模块:urllib.request,urllib.parse,urllib.error。在使用python3时,导入包要写from urllib.request import urlopen,直接写import urllib.request会报错
urlopen用来打开并读取一个从网络获取的远程对象,读取HTML文件、图像文件或其他流文件
2、BeautifulSoup
BeaurifulSoup库可以从HTML或XML文件中提取数据,将其解析为树形结构,然后方便地获取指定标签的对应属性.
二、增强代码严谨性
为增强代码的可读性,可以将上方代码改为可读性更强、更严谨的代码:
from urllib.request import urlopen from urllib.error import HTTPError from bs4 import BeautifulSoup def getTitle(url): try: html = urlopen(url) except HTTPError as e: return None try: bsObj = BeautifulSoup(html.read(), "html.parser") title = bsObj.body.h1 except AttributeError as e: return None return title title = getTitle("http://music.163.com/") if title is None: print("Title could not be found") else: print(title)
由于在联网过程中,会出现这样几种异常:网页输入错误、网页在服务器上不存在、服务器不存在…所以在处理代码时应当写出更严谨的代码来避免这些错误(方便查找错误)
相关文章推荐
- Python网络数据采集9:穿越网页表单与登录窗口进行采集
- [Python]网络数据采集概述(3)—穿越网页表单、登录窗口进行采集
- python-网络爬虫初学一:获取网页源码以及发送POST和GET请求
- python网络数据采集-穿越网页表单进行采集
- python3 网络爬虫(三)利用post请求获取网页的动态加载数据
- android 从网络上获取数据(图片,网页,xml,json等)
- python网络数据采集学习范例—利用CSS爬取网站特定标签,BeautifulSoup函数介绍及子标签
- Python网络数据采集4(译者:哈雷)
- Python3.4 获取百度网页源码并保存在本地文件中
- Python网络数据采集6:读取文档
- Python网络数据采集8:自然语言处理
- Python爬虫实战(4):豆瓣小组话题数据采集―动态网页
- Python网络数据采集(2)——复杂HTML解析(2)
- 十六、从网络中获取网页数据
- Python网络数据采集6(译者:哈雷)
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- 从网络中获取图片显示,获取网页源码
- Python网络数据采集6-隐含输入字段
- Python网络数据采集14:远程采集
- Python网络数据采集