Python获取网页数据详解流程

时间:2022-09-18 08:37:07

Requests 库是 Python 中发起 HTTP 请求的库,使用非常方便简单。
发送 GET 请求
当我们用浏览器打开东旭蓝天股票首页时,发送的最原始的请求就是 GET 请求,并传入url参数.

?
1
2
import requests
url='http://push2his.eastmoney.com/api/qt/stock/fflow/daykline/get'

用Python requests库的get函数得到数据并设置requests的请求头.

?
1
2
3
header={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}

得到network的参数.

?
1
2
3
4
5
6
7
8
9
10
data={
    'cb': 'jQuery1123026726575651052076_1633873068863',
    'lmt': '0',
    'klt':' 101',
    'fields1': 'f1,f2,f3,f7',
    'fields2': 'f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65',
    'ut': 'b2884a393a59ad64002292a3e90d46a5',
    'secid': '0.000040',
    '_': '1633873068864'
}

我们使用 content 属性来获取网站返回的数据,并命名为sd.

?
1
sd=requests.get(url=url,headers=header,data=data).content

json库可以自字符串或文件中解析JSON。 该库解析JSON后将其转为Python字典或者列表。re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分.

?
1
2
3
4
5
6
import json
import re
text=str(sd,'utf-8')
res=re.findall(r'[(](.*?)[)]',text)
re=json.loads(res[0])
p=re['data']['klines']

将杂乱无章的数据排版到excel中,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
all_list=re['data']['klines']
data_list=[]
latest_price_list=[]
price_limit_list=[]
net_amount_list1=[]
net_proportion_list1=[]
net_amount_list2=[]
net_proportion_list2=[]
net_amount_list3=[]
net_proportion_list3=[]
net_amount_list4=[]
net_proportion_list4=[]
net_amount_list5=[]
net_proportion_list5=[]
for i in range(len(all_list)):
        data=all_list[i].split(',')[0]
        data_list.append(data)
        ##收盘价
        latest_price=all_list[i].split(',')[11]
        latest_price_list.append(latest_price)
        ##涨跌幅
        price_limit=all_list[i].split(',')[12]
        price_limit_list.append(price_limit)
        ##主力净流入
        ####净额
        net_amount1=all_list[i].split(',')[1]
        net_amount_list1.append(net_amount1)
        ##占比
        net_proportion1=all_list[i].split(',')[6]
        net_proportion_list1.append(net_proportion1)
        ##超大单净流入
        ####净额
        net_amount2=all_list[i].split(',')[5]
        net_amount_list2.append(net_amount2)
        ##占比
        net_proportion2=all_list[i].split(',')[10]
        net_proportion_list2.append(net_proportion2)
        ##大单净流入
        ####净额
        net_amount3=all_list[i].split(',')[4]
        net_amount_list3.append(net_amount3)
        ##占比
        net_proportion3=all_list[i].split(',')[9]
        net_proportion_list3.append(net_proportion3)
        ##中单净流入
        ####净额
        net_amount4=all_list[i].split(',')[3]
        net_amount_list4.append(net_amount4)
        ##占比
        net_proportion4=all_list[i].split(',')[8]
        net_proportion_list4.append(net_proportion4)
        ##小单净流入
        ####净额
        net_amount5=all_list[i].split(',')[2]
        net_amount_list5.append(net_amount5)
        ##占比
        net_proportion5=all_list[i].split(',')[7]
        net_proportion_list5.append(net_proportion5)
#print(data_list)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pandas as pd
df=pd.DataFrame()
df['日期'] = data_list
df['收盘价'] = latest_price_list
df['涨跌幅(%)'] = price_limit_list
df['主力净流入-净额'] = net_amount_list1
df['主力净流入-净占比(%)'] = net_proportion_list1
df['超大单净流入-净额'] = net_amount_list2
df['超大单净流入-净占比(%)'] = net_proportion_list2
df['大单净流入-净额'] = net_amount_list3
df['大单净流入-净占比(%)'] = net_proportion_list3
df['中单净流入-净额'] = net_amount_list4
df['中单净流入-净占比(%)'] = net_proportion_list4
df['小单净流入-净额'] = net_amount_list5
df['小单净流入-净占比(%)'] = net_proportion_list5
df# 写入excel
df.to_excel('东旭蓝天资金流向一览表.xlsx')

将爬取出的东旭蓝天资金流向数据存到excel表中,得到表格的部分截图如下:

Python获取网页数据详解流程

到此这篇关于Python获取网页数据详解流程的文章就介绍到这了,更多相关Python 获取网页数据内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_61637261/article/details/120836966