结构安排
一至十八是第一部分;
十九至二十六是第二部分。
一、大数据时代的挑战
数据抽取、转换、存储 (Data ETL)
- 原始资料:Raw Data
- ETL脚本:ETL Scipt
- 结构化数据:Tidy Data
二、非结构化数据处理与网络爬虫
- 网页链接器(Web Connector)向目标网页发出请求(request);
- 目标网页将响应(response)发送给网页链接器(Web Connector);
- 对收到的响应进行资料剖析(Data Parser),剖析成结构化数据;
- 将结构化数据存入数据中心(Data Center)
三、了解网络爬虫背后的秘密
- 浏览器内建的开发人员工具
- requests
- BeautifulSoup4 (注意,BeautifulSoup4和BeautifulSoup是不一样的)
jupyter
jupyter中编辑的文件会保存在用户的家目录下,例如在windows中就会是
C:\Users\username
以Chrome为例,抓取前的分析步骤如图:
- 按
F12
进入到开发者工具; - 点击
Network
; 刷新页面
;- 找到
Doc
; - 找到左边
Name
这一栏的第一个(需要爬去的链接90%的情况都是第一个); - 点击右边的
Headers
; - 找到请求的URL和请求方式。
四、撰写第一只网络爬虫
Requests库
- 网络资源撷取套件
- 改善Urllib2的缺点,让使用者以最简单的方式获取网络资源
- 可以使用REST操作存取网络资源
jupyter
使用jupyter来抓取网页并打印在浏览器中,再按Ctrl-F
查找对应的内容,以确定我们要爬去的内容在该网页中。
HelloWorld
import requests
res = requests.get('http://www.sina.com.cn/')
res.encoding = 'utf-8'
print(res.text)
五、用BeautifulSoup4剖析网页元素
from bs4 import BeautifulSoup
html_sample = ' \
<html> \
<body> \
<h1 id="title">Hello World</h1> \
<a href="#" class="link">This is link1</a> \
<a href="# link2" class="link">This is link2</a> \
</body> \
</html>'
soup = BeautifulSoup(html_sample, 'html.parser')
print(soup.text)
六、BeautifulSoup基础操作
使用select找出含有h1标签的元素
soup = BeautifulSoup(html_sample)
header = soup.select('h1')
print(header)
print(header[0])
print(header[0].text)
使用select找出含有a的标签
soup = BeautifulSoup(html_sample, 'html.parser')
alink = soup.select('a')
print(alink)
for link in alink:
print(link)
print(link.txt)
使用select找出所有id为title的元素(id前面需要加#)
alink = soup.select('#title')
print(alink)
使用select找出所有class为link的元素(class前面需要加.)
soup = BeautifulSoup(html_sample)
for link in soup.select('.link'):
print(link)
使用select找出所有a tag的href链接
alinks = soup.select('a')
for link in alinks:
print(link['href']) # 原理:会把标签的属性包装成字典