python爬虫爬取股票代码数据

本次目标网站为   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)

最终获取出来的数据是:

 

以上为部分你数据

感谢观看!

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值