如何用python打开网页(如何用python爬取网站数据)?如果你对这个不了解,来看看!
Python 对网页数据读取和存储,下面是均衡永没给大家的分享,一起来看看。
如何用python打开网页
python读取HTML表格In [1]:
import pandas as pddf = pd.read_html('http://worldcup.2014.163.com/schedule/') # 使用pandas中的read_html函数读取HTML网页中的表格数据,dfOut[1]:
[ Unnamed: 0 Unnamed: 1 时间 编号 对阵 \ 0 NaN 1场 06月13日 星期五 04:00 A1-A4 巴西 3-1 克罗地亚 1 NaN 2场 06月14日 星期六 00:00 A3-A2 墨西哥 1-0 喀麦隆 2 NaN 3场 06月14日 星期六 03:00 B1-B4 西班牙 1-5 荷兰 3 NaN 4场 06月14日 星期六 06:00 B2-B3 智利 3-1 澳大利亚 4 NaN 5场 06月15日 星期日 00:00 C1-C4 哥伦比亚 3-0 希腊 5 NaN 7场 06月15日 星期日 03:00 D1-D3 乌拉圭 1-3 哥斯达黎加 6 NaN 8场 06月15日 星期日 06:00 D2-D4 英格兰 1-2 意大利 7 NaN 6场 06月15日 星期日 09:00 C2-C3 科特迪瓦 2-1 日本 8 NaN 9场 06月16日 星期一 00:00 E1-E2 瑞士 2-1 厄瓜多尔 9 NaN 10场 06月16日 星期一 03:00 E4-E3 法国 3-0 洪都拉斯 10 NaN 11场 06月16日 星期一 06:00 F1-F4 阿根廷 2-1 波黑 11 NaN 13场 06月17日 星期二 00:00 G1-G4 德国 4-0 葡萄牙 12 NaN 12场 06月17日 星期二 03:00 F3-F2 伊朗 0-0 尼日利亚 13 NaN 14场 06月17日 星期二 06:00 G2-G3 加纳 1-2 美国 14 NaN 15场 06月18日 星期三 00:00 H1-H2 比利时 2-1 阿尔及利亚 15 NaN 17场 06月18日 星期三 03:00 A1-A3 巴西 0-0 墨西哥 16 NaN 16场 06月18日 星期三 06:00 H4-H3 俄罗斯 1-1 韩国 17 NaN 20场 06月19日 星期四 00:00 B3-B4 澳大利亚 2-3 荷兰 18 NaN 19场 06月19日 星期四 03:00 B1-B2 西班牙 0-2 智利 19 NaN 18场 06月19日 星期四 06:00 A2-A1 喀麦隆 0-4 克罗地亚 20 NaN 21场 06月20日 星期五 00:00 C1-C2 哥伦比亚 2-1 科特迪瓦 21 NaN 23场 06月20日 星期五 03:00 D1-D2 乌拉圭 2-1 英格兰 22 NaN 22场 06月20日 星期五 06:00 C3-C4 日本 0-0 希腊 23 NaN 24场 06月21日 星期六 00:00 D4-D3 意大利 0-1 哥斯达黎加 24 NaN 25场 06月21日 星期六 03:00 E1-E4 瑞士 2-5 法国 25 NaN 26场 06月21日 星期六 06:00 E3-E2 洪都拉斯 1-2 厄瓜多尔 26 NaN 27场 06月22日 星期日 00:00 F1-F3 阿根廷 1-0 伊朗 27 NaN 29场 06月22日 星期日 03:00 G1-G2 德国 2-2 加纳 28 NaN 28场 06月22日 星期日 06:00 F2-F4 尼日利亚 1-0 波黑 29 NaN 31场 06月23日 星期一 00:00 H1-H4 比利时 1-0 俄罗斯 30 NaN 32场 06月23日 星期一 03:00 H3-H2 韩国 2-4 阿尔及利亚 31 NaN 30场 06月23日 星期一 06:00 G3-G4 美国 2-2 葡萄牙 32 NaN 35场 06月24日 星期二 00:00 B3-B1 澳大利亚 0-3 西班牙 33 NaN 36场 06月24日 星期二 00:00 B4-B2 荷兰 2-0 智利 34 NaN 33场 06月24日 星期二 04:00 A2-A1 喀麦隆 1-4 巴西 35 NaN 34场 06月24日 星期二 04:00 A4-A3 克罗地亚 1-3 墨西哥 36 NaN 39场 06月25日 星期三 00:00 D4-D1 意大利 0-1 乌拉圭 37 NaN 40场 06月25日 星期三 00:00 D3-D2 哥斯达黎加 0-0 英格兰 38 NaN 37场 06月25日 星期三 04:00 C3-C1 日本 1-4 哥伦比亚 39 NaN 38场 06月25日 星期三 04:00 C4-C2 希腊 2-1 科特迪瓦 40 NaN 43场 06月26日 星期四 00:00 F2-F1 尼日利亚 2-3 阿根廷 41 NaN 44场 06月26日 星期四 00:00 F4-F3 波黑 3-1 伊朗 42 NaN 41场 06月26日 星期四 04:00 E3-E1 洪都拉斯 0-3 瑞士 43 NaN 42场 06月26日 星期四 04:00 E2-E4 厄瓜多尔 0-0 法国 44 NaN 45场 06月27日 星期五 00:00 G3-G1 美国 0-1 德国 45 NaN 46场 06月27日 星期五 00:00 G4-G2 葡萄牙 2-1 加纳 46 NaN 47场 06月27日 星期五 04:00 H3-H1 韩国 0-1 比利时 47 NaN 48场 06月27日 星期五 04:00 H2-H4 阿尔及利亚 1-1 俄罗斯 补眠时刻 城市 电视直播 其他 0 22:00-04:00 圣保罗 CCTV5 战报 1 22:00-00:00 纳塔尔 CCTV5 战报 2 22:00-03:00 萨尔瓦多 CCTV5 战报 3 22:00-06:00 库亚巴 CCTV5 战报 4 22:00-00:00 贝罗奥里藏特 CCTV5 战报 5 22:00-03:00 福塔莱萨 CCTV5 战报 6 22:00-06:00 玛瑙斯 CCTV5 战报 7 22:00-09:00 累西腓 CCTV5 战报 8 22:00-00:00 巴西利亚 CCTV5 战报 9 22:00-03:00 阿雷格里港 CCTV5 战报 10 22:00-06:00 里约热内卢 CCTV5 战报 11 22:00-00:00 萨尔瓦多 CCTV5 战报 12 22:00-03:00 库亚巴 CCTV5 战报 13 22:00-06:00 纳塔尔 CCTV5 战报 14 22:00-00:00 贝罗奥里藏特 CCTV5 战报 15 22:00-03:00 福塔莱萨 CCTV5 战报 16 22:00-06:00 库亚巴 CCTV5 战报 17 22:00-00:00 阿雷格里港 CCTV5 战报 18 22:00-03:00 里约热内卢 CCTV5 战报 19 22:00-06:00 玛瑙斯 CCTV5 战报 20 22:00-00:00 巴西利亚 CCTV5 战报 21 22:00-03:00 圣保罗 CCTV5 战报 22 22:00-06:00 纳塔尔 CCTV5 战报 23 22:00-00:00 累西腓 CCTV5 战报 24 22:00-03:00 萨尔瓦多 CCTV5 战报 25 22:00-06:00 库亚巴 CCTV5 战报 26 22:00-00:00 贝罗奥里藏特 CCTV5 战报 27 22:00-03:00 福塔莱萨 CCTV5 战报 28 22:00-06:00 库亚巴 CCTV5 战报 29 22:00-00:00 里约热内卢 CCTV5 战报 30 22:00-03:00 阿雷格里港 CCTV5 战报 31 22:00-06:00 玛瑙斯 CCTV5 战报 32 22:00-00:00 库亚巴 CCTV5+ 战报 33 22:00-00:00 圣保罗 CCTV5 战报 34 22:00-04:00 巴西利亚 CCTV5 战报 35 22:00-04:00 累西腓 CCTV5+ 战报 36 22:00-00:00 纳塔尔 CCTV5 战报 37 22:00-00:00 贝罗奥里藏特 CCTV5+ 战报 38 22:00-04:00 库亚巴 CCTV5 战报 39 22:00-04:00 福塔莱萨 CCTV5+ 战报 40 22:00-00:00 阿雷格里港 CCTV5 战报 41 22:00-00:00 萨尔瓦多 CCTV5+ 战报 42 22:00-04:00 玛瑙斯 CCTV5+ 战报 43 22:00-04:00 里约热内卢 CCTV5 战报 44 22:00-00:00 累西腓 CCTV5 战报 45 22:00-00:00 巴西利亚 CCTV5+ 战报 46 22:00-04:00 圣保罗 CCTV5 战报 47 22:00-04:00 库亚巴 CCTV5+ 战报 , Unnamed: 0 Unnamed: 1 时间 编号 对阵 补眠时刻 \ 0 NaN 49场 06月29日 星期日 00:00 NaN 巴西 4-3 智利 22:00-00:00 1 NaN 50场 06月29日 星期日 04:00 NaN 哥伦比亚 2-0 乌拉圭 22:00-04:00 2 NaN 51场 06月30日 星期一 00:00 NaN 荷兰 2-1 墨西哥 22:00-00:00 3 NaN 52场 06月30日 星期一 04:00 NaN 哥斯达黎加 6-4 希腊 22:00-04:00 4 NaN 53场 07月01日 星期二 00:00 NaN 法国 2-0 尼日利亚 22:00-00:00 5 NaN 54场 07月01日 星期二 04:00 NaN 德国 2-1 阿尔及利亚 22:00-04:00 6 NaN 55场 07月02日 星期三 00:00 NaN 阿根廷 1-0 瑞士 22:00-00:00 7 NaN 56场 07月02日 星期三 04:00 NaN 比利时 2-1 美国 22:00-04:00 城市 电视直播 其他 0 贝罗奥里藏特 CCTV5 战报 1 里约热内卢 CCTV5 战报 2 福塔莱萨 CCTV5 战报 3 累西腓 CCTV5 战报 4 巴西利亚 CCTV5 战报 5 阿雷格里港 CCTV5 战报 6 圣保罗 CCTV5 战报 7 萨尔瓦多 CCTV5 战报 , Unnamed: 0 Unnamed: 1 时间 编号 对阵 补眠时刻 \ 0 NaN 58场 07月05日 星期六 00:00 NaN 法国 0-1 德国 22:00-00:00 1 NaN 57场 07月05日 星期六 04:00 NaN 巴西 2-1 哥伦比亚 22:00-04:00 2 NaN 60场 07月06日 星期日 00:00 NaN 阿根廷 1-0 比利时 22:00-00:00 3 NaN 59场 07月06日 星期日 04:00 NaN 荷兰 4-3 哥斯达黎加 22:00-04:00 城市 电视直播 其他 0 里约热内卢 CCTV5 战报 1 福塔莱萨 CCTV5 战报 2 巴西利亚 CCTV5 战报 3 萨尔瓦多 CCTV5 战报 , Unnamed: 0 Unnamed: 1 时间 编号 对阵 补眠时刻 \ 0 NaN 61场 07月09日 星期三 04:00 NaN 巴西 1-7 德国 22:00-04:00 1 NaN 62场 07月10日 星期四 04:00 NaN 荷兰 2-4 阿根廷 22:00-04:00 城市 电视直播 其他 0 贝罗奥里藏特 CCTV5 战报 1 圣保罗 CCTV5 战报 , Unnamed: 0 Unnamed: 1 时间 编号 对阵 补眠时刻 \ 0 NaN 63场 07月13日 星期日 04:00 NaN 巴西 0-3 荷兰 22:00-04:00 1 NaN 64场 07月14日 星期一 03:00 NaN 德国 1-0 阿根廷 22:00-03:00 城市 电视直播 其他 0 巴西利亚 CCTV5 战报 1 里约热内卢 CCTV5 战报 ]In [2]:
df[0]Out[2]:
Unnamed: 0
Unnamed: 1
时间
编号
对阵
补眠时刻
城市
电视直播
其他
0
NaN
1场
06月13日 星期五 04:00
A1-A4
巴西 3-1 克罗地亚
22:00-04:00
圣保罗
CCTV5
战报
1
NaN
2场
06月14日 星期六 00:00
A3-A2
墨西哥 1-0 喀麦隆
22:00-00:00
纳塔尔
CCTV5
战报
2
NaN
3场
06月14日 星期六 03:00
B1-B4
西班牙 1-5 荷兰
22:00-03:00
萨尔瓦多
CCTV5
战报
3
NaN
4场
06月14日 星期六 06:00
B2-B3
智利 3-1 澳大利亚
22:00-06:00
库亚巴
CCTV5
战报
4
NaN
5场
06月15日 星期日 00:00
C1-C4
哥伦比亚 3-0 希腊
22:00-00:00
贝罗奥里藏特
CCTV5
战报
5
NaN
7场
06月15日 星期日 03:00
D1-D3
乌拉圭 1-3 哥斯达黎加
22:00-03:00
福塔莱萨
CCTV5
战报
6
NaN
8场
06月15日 星期日 06:00
D2-D4
英格兰 1-2 意大利
22:00-06:00
玛瑙斯
CCTV5
战报
7
NaN
6场
06月15日 星期日 09:00
C2-C3
科特迪瓦 2-1 日本
22:00-09:00
累西腓
CCTV5
战报
8
NaN
9场
06月16日 星期一 00:00
E1-E2
瑞士 2-1 厄瓜多尔
22:00-00:00
巴西利亚
CCTV5
战报
9
NaN
10场
06月16日 星期一 03:00
E4-E3
法国 3-0 洪都拉斯
22:00-03:00
阿雷格里港
CCTV5
战报
10
NaN
11场
06月16日 星期一 06:00
F1-F4
阿根廷 2-1 波黑
22:00-06:00
里约热内卢
CCTV5
战报
11
NaN
13场
06月17日 星期二 00:00
G1-G4
德国 4-0 葡萄牙
22:00-00:00
萨尔瓦多
CCTV5
战报
12
NaN
12场
06月17日 星期二 03:00
F3-F2
伊朗 0-0 尼日利亚
22:00-03:00
库亚巴
CCTV5
战报
13
NaN
14场
06月17日 星期二 06:00
G2-G3
加纳 1-2 美国
22:00-06:00
纳塔尔
CCTV5
战报
14
NaN
15场
06月18日 星期三 00:00
H1-H2
比利时 2-1 阿尔及利亚
22:00-00:00
贝罗奥里藏特
CCTV5
战报
15
NaN
17场
06月18日 星期三 03:00
A1-A3
巴西 0-0 墨西哥
22:00-03:00
福塔莱萨
CCTV5
战报
16
NaN
16场
06月18日 星期三 06:00
H4-H3
俄罗斯 1-1 韩国
22:00-06:00
库亚巴
CCTV5
战报
17
NaN
20场
06月19日 星期四 00:00
B3-B4
澳大利亚 2-3 荷兰
22:00-00:00
阿雷格里港
CCTV5
战报
18
NaN
19场
06月19日 星期四 03:00
B1-B2
西班牙 0-2 智利
22:00-03:00
里约热内卢
CCTV5
战报
19
NaN
18场
06月19日 星期四 06:00
A2-A1
喀麦隆 0-4 克罗地亚
22:00-06:00
玛瑙斯
CCTV5
战报
20
NaN
21场
06月20日 星期五 00:00
C1-C2
哥伦比亚 2-1 科特迪瓦
22:00-00:00
巴西利亚
CCTV5
战报
21
NaN
23场
06月20日 星期五 03:00
D1-D2
乌拉圭 2-1 英格兰
22:00-03:00
圣保罗
CCTV5
战报
22
NaN
22场
06月20日 星期五 06:00
C3-C4
日本 0-0 希腊
22:00-06:00
纳塔尔
CCTV5
战报
23
NaN
24场
06月21日 星期六 00:00
D4-D3
意大利 0-1 哥斯达黎加
22:00-00:00
累西腓
CCTV5
战报
24
NaN
25场
06月21日 星期六 03:00
E1-E4
瑞士 2-5 法国
22:00-03:00
萨尔瓦多
CCTV5
战报
25
NaN
26场
06月21日 星期六 06:00
E3-E2
洪都拉斯 1-2 厄瓜多尔
22:00-06:00
库亚巴
CCTV5
战报
26
NaN
27场
06月22日 星期日 00:00
F1-F3
阿根廷 1-0 伊朗
22:00-00:00
贝罗奥里藏特
CCTV5
战报
27
NaN
29场
06月22日 星期日 03:00
G1-G2
德国 2-2 加纳
22:00-03:00
福塔莱萨
CCTV5
战报
28
NaN
28场
06月22日 星期日 06:00
F2-F4
尼日利亚 1-0 波黑
22:00-06:00
库亚巴
CCTV5
战报
29
NaN
31场
06月23日 星期一 00:00
H1-H4
比利时 1-0 俄罗斯
22:00-00:00
里约热内卢
CCTV5
战报
30
NaN
32场
06月23日 星期一 03:00
H3-H2
韩国 2-4 阿尔及利亚
22:00-03:00
阿雷格里港
CCTV5
战报
31
NaN
30场
06月23日 星期一 06:00
G3-G4
美国 2-2 葡萄牙
22:00-06:00
玛瑙斯
CCTV5
战报
32
NaN
35场
06月24日 星期二 00:00
B3-B1
澳大利亚 0-3 西班牙
22:00-00:00
库亚巴
CCTV5+
战报
33
NaN
36场
06月24日 星期二 00:00
B4-B2
荷兰 2-0 智利
22:00-00:00
圣保罗
CCTV5
战报
34
NaN
33场
06月24日 星期二 04:00
A2-A1
喀麦隆 1-4 巴西
22:00-04:00
巴西利亚
CCTV5
战报
35
NaN
34场
06月24日 星期二 04:00
A4-A3
克罗地亚 1-3 墨西哥
22:00-04:00
累西腓
CCTV5+
战报
36
NaN
39场
06月25日 星期三 00:00
D4-D1
意大利 0-1 乌拉圭
22:00-00:00
纳塔尔
CCTV5
战报
37
NaN
40场
06月25日 星期三 00:00
D3-D2
哥斯达黎加 0-0 英格兰
22:00-00:00
贝罗奥里藏特
CCTV5+
战报
38
NaN
37场
06月25日 星期三 04:00
C3-C1
日本 1-4 哥伦比亚
22:00-04:00
库亚巴
CCTV5
战报
39
NaN
38场
06月25日 星期三 04:00
C4-C2
希腊 2-1 科特迪瓦
22:00-04:00
福塔莱萨
CCTV5+
战报
40
NaN
43场
06月26日 星期四 00:00
F2-F1
尼日利亚 2-3 阿根廷
22:00-00:00
阿雷格里港
CCTV5
战报
41
NaN
44场
06月26日 星期四 00:00
F4-F3
波黑 3-1 伊朗
22:00-00:00
萨尔瓦多
CCTV5+
战报
42
NaN
41场
06月26日 星期四 04:00
E3-E1
洪都拉斯 0-3 瑞士
22:00-04:00
玛瑙斯
CCTV5+
战报
43
NaN
42场
06月26日 星期四 04:00
E2-E4
厄瓜多尔 0-0 法国
22:00-04:00
里约热内卢
CCTV5
战报
44
NaN
45场
06月27日 星期五 00:00
G3-G1
美国 0-1 德国
22:00-00:00
累西腓
CCTV5
战报
45
NaN
46场
06月27日 星期五 00:00
G4-G2
葡萄牙 2-1 加纳
22:00-00:00
巴西利亚
CCTV5+
战报
46
NaN
47场
06月27日 星期五 04:00
H3-H1
韩国 0-1 比利时
22:00-04:00
圣保罗
CCTV5
战报
47
NaN
48场
06月27日 星期五 04:00
H2-H4
阿尔及利亚 1-1 俄罗斯
22:00-04:00
库亚巴
CCTV5+
战报
网络爬虫In [3]:
# 爬虫代码import requestsfrom bs4 import BeautifulSoupdata = []wb_data = requests.get('http://www.kugou.com/yy/rank/home/1-8888.html')soup = BeautifulSoup(wb_data.text,'lxml')ranks = soup.select('span.pc_temp_num')titles = soup.select('p.pc_temp_songlist > ul > li > a')times = soup.select('span.pc_temp_tips_r > span')for rank,title,time in zip(ranks,titles,times): a = { 'rank':rank.get_text().strip(), 'singer':title.get_text().split('-')[0], 'song':title.get_text().split('-')[1], 'time':time.get_text().strip() } data.append(a)dataOut[3]:
[{'rank': '1', 'singer': '于文文 ', 'song': ' 体面', 'time': '4:42'}, {'rank': '2', 'singer': '袁娅维 ', 'song': ' 说散就散', 'time': '4:02'}, {'rank': '3', 'singer': '广东雨神 ', 'song': ' 广东爱情故事', 'time': '3:34'}, {'rank': '4', 'singer': '大壮 ', 'song': ' 我们不一样', 'time': '4:31'}, {'rank': '5', 'singer': '鞠文娴 ', 'song': ' BINGBIAN病变 (女声版)', 'time': '4:07'}, {'rank': '6', 'singer': '胡66 ', 'song': ' 空空如也', 'time': '3:31'}, {'rank': '7', 'singer': '张北北 ', 'song': ' 拥抱你离去', 'time': '4:02'}, {'rank': '8', 'singer': '大壮 ', 'song': ' 差一步', 'time': '4:05'}, {'rank': '9', 'singer': '杨宗纬、张碧晨 ', 'song': ' 凉凉', 'time': '5:33'}, {'rank': '10', 'singer': '新乐尘符 ', 'song': ' 123我爱你', 'time': '3:19'}, {'rank': '11', 'singer': '赵雷 ', 'song': ' 成都', 'time': '5:28'}, {'rank': '12', 'singer': '校长 ', 'song': ' 带你去旅行', 'time': '3:46'}, {'rank': '13', 'singer': '毛不易 ', 'song': ' 消愁 (Live)', 'time': '2:59'}, {'rank': '14', 'singer': '岑宁儿 ', 'song': ' 追光者', 'time': '3:55'}, {'rank': '15', 'singer': 'Matteo ', 'song': ' Panama', 'time': '3:20'}, {'rank': '16', 'singer': '麦小兜 ', 'song': ' 9420', 'time': '3:49'}, {'rank': '17', 'singer': '金志文、徐佳莹 ', 'song': ' 远走高飞', 'time': '3:55'}, {'rank': '18', 'singer': '谭艳 ', 'song': ' 说散就散', 'time': '4:42'}, {'rank': '19', 'singer': '秋裤大叔 ', 'song': ' 一晃就老了', 'time': '4:15'}, {'rank': '20', 'singer': 'JC ', 'song': ' 说散就散', 'time': '3:51'}, {'rank': '21', 'singer': '周杰伦 ', 'song': ' 等你下课 (with 杨瑞代)', 'time': '4:30'}, {'rank': '22', 'singer': 'Alan Walker ', 'song': ' Faded', 'time': '3:33'}]In [4]:
from pandas import DataFramedf = DataFrame(data) # 把爬取的数据传给DataFrame构造器dfOut[4]:
rank
singer
song
time
0
1
于文文
体面
4:42
1
2
袁娅维
说散就散
4:02
2
3
广东雨神
广东爱情故事
3:34
3
4
大壮
我们不一样
4:31
4
5
鞠文娴
BINGBIAN病变 (女声版)
4:07
5
6
胡66
空空如也
3:31
6
7
张北北
拥抱你离去
4:02
7
8
大壮
差一步
4:05
8
9
杨宗纬、张碧晨
凉凉
5:33
9
10
新乐尘符
123我爱你
3:19
10
11
赵雷
成都
5:28
11
12
校长
带你去旅行
3:46
12
13
毛不易
消愁 (Live)
2:59
13
14
岑宁儿
追光者
3:55
14
15
Matteo
Panama
3:20
15
16
麦小兜
9420
3:49
16
17
金志文、徐佳莹
远走高飞
3:55
17
18
谭艳
说散就散
4:42
18
19
秋裤大叔
一晃就老了
4:15
19
20
JC
说散就散
3:51
20
21
周杰伦
等你下课 (with 杨瑞代)
4:30
21
22
Alan Walker
Faded
3:33
如何用python爬取网站数据
爬取网页其实就是通过URL获取网页信息,网页信息的实质是一段添加了JavaScript和CSS的HTML代码。Python提供了一个抓取网页信息的第三方模块requests,requests模块自称“HTTP for Humans”,直译过来的意思是专门为人类而设计的HTTP模块,该模块支持发送请求,也支持获取响应。
1.发送请求
requests模块提供了很多发送HTTP请求的函数,常用的请求函数具体如表10-1所示。
表10-1 requests模块的请求函数
2.获取响应
requests模块提供的Response 类对象用于动态地响应客户端的请求,控制发送给用户的信息,并且将动态地生成响应,包括状态码、网页的内容等。接下来通过一张表来列举Response类可以获取到的信息,如表10-2所示。
表10-2 Response 类的常用属性
接下来通过一个案例来演示如何使用requests模块抓取百度网页,具体代码如下:
# 01 requests baiduimport requestsbase_url = 'http://www.baidu.com'#发送GET请求res = requests.get (base_url)print("响应状态码:{}".format(res.status_code)) #获取响应状态码print("编码方式:{}".format(res.encoding)) #获取响应内容的编码方式res.encoding = 'utf-8' #更新响应内容的编码方式为UIE-8print("网页源代码:\n{}".format(res.text)) #获取响应内容以上代码中,第2行使用import导入了requests模块;第3~4行代码根据URL向服务器发送了一个GET请求,并使用变量res接收服务器返回的响应内容;第5~6行代码打印了响应内容的状态码和编码方式;第7行将响应内容的编码方式更改为“utf-8”;第8行代码打印了响应内容。运行程序,程序的输出结果如下:
响应状态码:200编码方式:ISO-8859-1网页源代码:<!DOCTYPE html><!–-STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head><body link=#0000cc>…省略N行…</body></html>值得一提的是,使用requests模块爬取网页时,可能会因为没有连接网络、服务器连接失败等原因导致产生各种异常,最常见的两个异常是URLError和HTTPError,这些网络异常可以使用 try…except 语句捕获与处理。