PYTHON實(shí)戰(zhàn)計(jì)劃自建項(xiàng)目--爬取深交所數(shù)據(jù)(董監(jiān)高持股變動(dòng)情況)

心血來(lái)潮去爬了一下深交所的部分?jǐn)?shù)據(jù)(http://www.szse.cn/main/disclosure/jgxxgk/djggfbd/

在爬的過(guò)程中發(fā)現(xiàn),該網(wǎng)頁(yè)跳轉(zhuǎn)頁(yè)碼,但網(wǎng)址卻一直不變,通過(guò)查看網(wǎng)頁(yè)的post數(shù)據(jù),發(fā)現(xiàn)有個(gè)控制頁(yè)碼的項(xiàng)

Paste_Image.png

只要修改該項(xiàng)的值再post給網(wǎng)頁(yè)就能實(shí)現(xiàn)頁(yè)碼的跳轉(zhuǎn),在網(wǎng)上查找具體方法后,改寫(xiě)了代碼,能實(shí)現(xiàn)爬取任意頁(yè)碼的數(shù)據(jù)了

我的代碼

# -*- coding:utf-8 -*-
import urllib.request, urllib.parse
from bs4 import BeautifulSoup
import time

def get_info(start=1,end=1):
    info = {}  #儲(chǔ)存目標(biāo)數(shù)據(jù)
    url = 'http://www.szse.cn/main/disclosure/jgxxgk/djggfbd/' #目標(biāo)鏈接
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
    }
    #爬取所選取頁(yè)數(shù)區(qū)間數(shù)據(jù),該網(wǎng)頁(yè)跳轉(zhuǎn)頁(yè)碼,網(wǎng)址不變
    # 通過(guò)分析,post的數(shù)據(jù)中'tab1PAGENUM'是用來(lái)控制頁(yè)碼的,通過(guò)改變?cè)撴I的值,來(lái)實(shí)現(xiàn)頁(yè)碼跳轉(zhuǎn)
    for i in range(start,end+1):
        post_data = urllib.parse.urlencode({'tab1PAGENUM': i}).encode(encoding='UTF8') #需post的數(shù)據(jù)
        #req = urllib.request.Request(url, headers=headers)
        res = urllib.request.urlopen(url, post_data)  #為data參數(shù)賦值
        time.sleep(2) #防止訪問(wèn)太頻繁
        soup = BeautifulSoup(res, 'lxml')

        titles = soup.find_all('td', class_='cls-data-th') #標(biāo)題行
        datas = soup.find_all('td', class_='cls-data-td')  #數(shù)據(jù)行
        num = int(len(datas) / len(titles))                #數(shù)據(jù)行數(shù)
    #將數(shù)據(jù)寫(xiě)入本地文件
        with open('/Users/zorro/Desktop/test1.txt', 'a') as fs:
            for j in range(num):
                for title, data in zip(titles, datas[12 * j:12 * (j + 1)]):
                    info[title.get_text()] = data.get_text()
                    s = str(info)
                fs.writelines(s)
                fs.writelines('\n')
            print('Done!')


get_info(1,100)   #爬取前一百頁(yè)數(shù)據(jù) 

總結(jié)

1.爬取過(guò)程不是很難,該網(wǎng)頁(yè)無(wú)需用到headers即可爬??;
2.遇到的問(wèn)題是頁(yè)碼變動(dòng)但網(wǎng)址不變動(dòng),只要找到控制頁(yè)碼變動(dòng)的項(xiàng),把該值post給網(wǎng)頁(yè)就能實(shí)現(xiàn)了;
3.問(wèn)題解決過(guò)程中,查找了很多資料,也學(xué)到了很多,攻克每一個(gè)新遇到的問(wèn)題,就是對(duì)自己的一次肯定,能提高自信,也能提高學(xué)習(xí)興趣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評(píng)論 25 708
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評(píng)論 19 139
  • 我曾經(jīng)用那時(shí)生命的全部付出,金錢!感情!我每天活的那么累,卻一無(wú)所有,只為了讓自己的愛(ài)人開(kāi)心,幸福,也許她覺(jué)得不是...
    帶著樹(shù)木去旅行閱讀 338評(píng)論 0 0
  • 日常中常見(jiàn)貴金屬首飾中的科學(xué) 日常生活中一些愛(ài)美人士以及一些有一定經(jīng)濟(jì)基礎(chǔ)的人士中,佩戴金屬飾品或者珠寶較為常見(jiàn),...
    w情有獨(dú)鐘z閱讀 2,801評(píng)論 0 4
  • 從小到大,常常被朋友們說(shuō)成是一個(gè)會(huì)講故事的人(臉紅),雖是謬贊,但也欣然接受,因?yàn)槲业拇_喜歡把生活中遇到的小事添...
    慶慶通遼閱讀 357評(píng)論 0 0

友情鏈接更多精彩內(nèi)容