本次目标网站为 http://q.10jqka.com.cn/gn/detail/code/301558/ 首先分析网站,该网站 属于动态网站,其次根据开发者工具,每次经行翻页,去观察发送哪些请求。最后找到数据,开始观察参数,发现规律以后开始做。
本网站我认为最有意思的就是反爬机制,每次获取网站数据的时候,必须用浏览器将该网页打开,所以就需要调运 ” webbrowser “ 库,最终得到想要的数据。
最后代码如下:
#
import requests
import re
import time
import xlwt
import webbrowser
def main(): #主函数
for i in range(1,11):
url=f'http://q.10jqka.com.cn/gn/detail/field/264648/order/desc/page/{i}/ajax/3/code/301558'
fun(url)
#print(url)
lis=[]
lis1=[]
lis2=[]
lis4=[]
name1=re.compile(r'<td><a href="http://stockpage.10jqka.com.cn/.*?" target="_blank">(?P<bb>.*?)</a></td>',re.S) #正则表达式提取数据
def fun(url): #表示请求网站,得到页面源代码
#下方是头部文件,根据自己的计算机进行添加
head = {
"User-Agent": "*************************************",
"Cookie": "******************************************",
"Referer": "*****************************************",
"hexin-v": "****************************************",
"Host": "*************************************",
"Pragma": "***************************"
}
html = requests.get(url, headers=head).text
while True:
if html[0:12] == '<html><body>':
webbrowser.open(url)
time.sleep(4)
html = requests.get(url, headers=head).text
pass
else:
#print(1)
break
fun1(html)
#print(html)
def fun1(html):
aa=name1.finditer(html)
for i in aa:
print(i.group('bb'))
lis.append(i.group('bb'))
def fun2(lis): #数据处理
for i in range(len(lis)):
if i==0:
lis2.append(lis[i])
pass
elif i%2==1:
lis1.append(lis[i])
else:
lis2.append(lis[i])
for i in range(len(lis1)):
lis3=[]
lis3.append(lis2[i])
lis3.append(lis1[i])
lis4.append(lis3)
def fun3(lis4): #数据保存
book = xlwt.Workbook(encoding="utf-8", style_compression=0) # 创建"workbook"对象
sheet = book.add_sheet("数据", cell_overwrite_ok=True) # 创建工作表
col = ["代码", "名称"]
for i in range(0, len(col)):
sheet.write(0, i, col[i]) # 列名
for i in range(1, len(lis4)):
print('已经存储', i - 1, '行数据')
for j in range(0, len(lis4[i])):
sheet.write(i, j, lis4[i - 1][j])
book.save("数据3.xls")
if __name__ == '__main__':
main()
fun2(lis)
for i in lis4:
print(i)
fun3(lis4)
最终获取出来的数据是:
以上为部分你数据
感谢观看!