您当前的位置:首页 > 时尚 > 内容

如何用python打开网页(如何用python爬取网站数据)

如何用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网页中的表格数据,df

Out[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)data

Out[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构造器df

Out[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 语句捕获与处理。


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 适合40人左右的团建活动,团建小游戏室内简单40人(与刮风下雨降温say)

下一篇: 姬凤梨叶子变色怎么办(姬凤梨有根吗)



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号