<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 關注 > > 正文

              天天最新:【爬取紅嶺創投】存儲在mysql數據庫中的無頭模式

              來源:CSDN 時間:2023-03-31 08:06:28

              目標


              (資料圖片僅供參考)

              爬取紅嶺創投(https://www.my089.com/)日投資發標記錄,存儲在mysql數據庫中,并將數據可視化以便分析.

              行動

              爬取數據

              通過selenium+FIrefox的無頭模式將需要的數據爬取出來,代碼實現不在贅述,詳細步驟可查看我的上一篇圖文(如何利用Python爬取網易新聞),selenium3.11.0版本已經停止對phantomjs的支持,現在可以使用chrome和firefox的無頭模式實現該功能. 打開無頭模式:

              from selenium.webdriver.firefox.options import Optionsfirefox_options=webdriver.FirefoxOptions()firefox_options.add_argument("--headless")firefox_options.add_argument("--disable-gpu")

              一個疑問:

              使用ubuntu的crontab定時任務運行此爬蟲腳本時,如果不打開無頭模式,報錯如下:

              selenium.comm.exception.WebDriverException:message:invalid argument :can"tkill an exited process

              沒能理解這個報錯的原因,希望與大家一起討論.

              存儲數據

              數據庫這次選擇了mysql, 首先需要建立自己的數據庫,建立相應表格,這里推薦使用 Navicat,能夠將數據庫操作圖形化.navicat需要做一些配置,網上有大量教程,建表時需要注意類型,選擇正確的類型在后續使用時會減少很多麻煩,例如:

              VARCHAR和CHAR類型

              varchar適用場景:

              字符串列的最大長度比平均長度大很多字符串列很少被更新使用了多字節字符集存儲字符串(如utf8中的中文和英文)

              char適用場景:

              存儲長度近似的值(md5值,如密碼)存儲短字符串存儲經常被更新的字符串列

              日期類型

              TIMESTAMP類型:

              以yyyy-MM-dd HH:mm:ss格式顯示,占用4個字節時間范圍:1970-1-1 到 2038-01-19 DATATIME類型:以yyyy-MM-dd HH:mm:ss格式顯示,占用8個字節時間范圍:1000-1-1 00:00:00至9999-12-31 23:59:59

              插入數據

              db=pymysql.connect(host="localhost",user="root",password=    "xxxx",db="hlct",charset="utf8")    sql="INSERT INTO data_1 VALUES("" + dic["借款人"] + "","" +dic["時間"]\        + "","" + dic["借款金額"].replace(",", "")+ "","" + dic["利率"] +\        "","" + dic["期限"] + "","" + dic["還款方式"] + "");"cursor =db.cursor()  #獲取操作游標    cursor.execute(sql)  #執行sql語句    db.commit()          #提交到數據庫執行    db.close()

              此時,數據已經靜悄悄的待在數據庫中了 xd

              利用echarts將數據可視化作圖

              最初我是在這學習的echarts基本操作 ------渲染圖表 針對這次的目標,折線圖是最好的展現數據方式.數據庫原始數據需要做出一定處理,根據具體用途處理就好.

              import pyecharts_snapshotfrom datetime import datetime ,date, timedeltafrom pyecharts import Line

              def rLine(y_rate):    x_axis =["00", "01", "02", "03", "04", "05", "06", "07",             "08", "09", "10" ,"11","12", "13", "14", "15", "16", "17", "18", "19",             "20", "21","22","23"]    aver=[];max=[];min=[]    for y in y_rate:        aver.append(y[0])        max.append(y[1])        min.append(y[2])    line = Line("紅嶺創投利率曲線""("+Date+")")    line.use_theme("dark")    line.add("最高利率", x_axis=x_axis,y_axis=max,yaxis_max=9,             yaxis_min=8,yaxis_force_interval=0.1,             yaxis_formatter="%")    line.render(path="/home/lsgo18/PycharmProjects/honglingchuangtou/rate.png")

              x_axis--------------------------------------橫軸數據y_axis--------------------------------------縱軸數據line.add()----------------------------添加數據作圖yaxis_max--------------------設置縱軸刻度范圍yaxis_force_interval--------------設置刻度精度line.use_theme--------------------------主題顏色line.render()------------------------------生成文件

              crontab定時任務

              觀察了紅嶺創投往網站一段時間后,發現只能顯示近十分鐘左右的即時數據,不可能每過幾分鐘手動點擊程序運行,伙伴們向我推薦了一個非常好用的指令-----crontab,crontab 是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表,并且在后臺運行,不會打擾到我們的學習和工作.

              打開crontab:

              sudo vim /etc/cronta

              界面如下(通過vim打開)

              基本格式

              *   *   *   *   *  command

              分  時  日  月  周  命令 第1列表示分鐘1~59 每分鐘用*或者 */1表示 第2列表示小時1~23(0表示0點) 第3列表示日期1~31 第4列表示月份1~12 第5列標識號星期0~6(0表示星期天) 第6列要運行的命令 通常需要將python環境絕對路徑,程序絕對路徑寫入命令,保證能正常運行,如果crontab沒有運行,大概率的原因就在此,圖中倒數第四行黃色部分就是運行爬蟲的指令,最后/auto.log部分是輸出日志,將每一次運行的結果寫進日志文件,以便檢查運行情況.

              smtplib發送郵件

              每天處理數據做出折線圖后,將圖片發送給團隊老大,smtplib是不錯的選擇,結合crontab就能每天自動運行,成就感超強.

              import smtplibfrom email import encodersfrom email.header import Headerfrom email.mime.text import MIMETextfrom email.mime.base import MIMEBasefrom email.mime.multipart import MIMEMultipartfrom email.utils import parseaddr, formataddr

              def send(self):        from_addr = "74400xxxx@qq.com"  # 發件人 Email 地址和口令        password = "xxxxxxx"        smtp_server = "smtp.qq.com"  # SMTP 服務器地址        to_addr = "xxxx@qq.com"  # 收件人地址        # 郵件頭        msg = MIMEMultipart()#代表郵件本身        msg["From"] = self._format_addr("lsgo

              責任編輯:

              標簽:

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩