Python网路数据采集基本内容与工具
优采云 发布时间: 2020-08-09 09:48网络数据采集的基本内容相关工具介绍使用外置的恳求模块包urllib发起恳求
urllib收录以下四个模块:
1. urllib.request 请求和读取URL
2. urllib.error 定义了urllib.request使用的异常
3. urllib.parse 解析URL
4. urllib.robotparser 解析robots.txt。该文件可以使爬虫了解网站的爬取限制和网站地图
使用Python发起恳求,拿到HTML源码:
from urllib.request import urlopen
html = urlopen("http://desk.zol.com.cn/")
print(html.read())
如果恳求的是多媒体文件,可以urlretrieve将其保存到本地:
from urllib.request import urlretrieve
urlretrieve(downloadLink,filePath)
使用第三方库BeautifulSoup解析HTML
Beautiful Soup 是一个太强悍的HTML/XML解析工具,使用它可以太方面的对页面元素进行搜素和更改。
使用须要先安装它,一种方式就是直接通过pip安装:
pip install beautifulsoup4
下面是一个简单的列子,更多定位页面元素的方式请参考文档。
# 使用前先导入
from bs4 import BeautifulSoup
......
# 加载页面并解析
page = urlopen(url)
pageObj = BeautifulSoup(page.read(), "html.parser")
# 获取带有指定class属性的a元素
for link in pageObj.findAll("a",{"class":"pic"}):
if 'href' in link.attrs:
......
#取到链接之后可以继续爬取
数据清洗与自然语言工具包NLTK
通常情况下,从页面从领到的文本内容很有可能并不是我们须要的款式,或者不是太符合预期,这样就须要先进行清洗,比如过滤掉空白符,大小写转换、提取连续词组组等等。
《Python网路数据采集》里面讲到使用自然语言工具包NLTK,可以对一段文字进行词组数目、单词频度以及词组短语进行统计等,这里做下记录作为备用。
使用Requests 第三方库进行复杂HTTP请求
Requests 相比Python标准库愈加便捷,功能也更多样。通过它可以定做恳求头、获取json响应、二进制响应等等。
1.发起POST恳求:
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
requests.post("http://httpbin.org/post", data=payload)
2.上传文件恳求:
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
requests.post(url, files=files)
3.Cookie
# 取cookie值
r = requests.get(url)
r.cookies['example_cookie_name']
# 指定cookie发起请求
cookies = dict(key='value')
r = requests.get(url, cookies=cookies)
4.使用会话层面的API
使用session对象可以太方面的进行持续发起后续恳求,不需要自动维护cookie信息