日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?

發布時間:2025/3/21 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一步:爬取數據

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

打開無頭模式:from?selenium.webdriver.firefox.options?import?Options

firefox_options=webdriver.FirefoxOptions()

firefox_options.add_argument("--headless")

firefox_options.add_argument("--disable-gpu")

一個疑問:

使用 ubuntu 的 crontab 定時任務運行此爬蟲腳本時,如果不打開無頭模式,報錯如下:selenium.comm.exception.WebDriverException:message:invalid?argument?:can't?kill?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()

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

第三步:利用echarts將數據可視化作圖

針對這次的目標,折線圖是最好的展現數據方式。數據庫原始數據需要做出一定處理,根據具體用途處理就好。import?pyecharts_snapshot

from?datetime?import?datetime?,date,?timedelta

from?pyecharts?import?Linedef?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():生成文件

img02img03

第四步:crontab定時任務

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

打開crontab:sudo?vim?/etc/cronta

界面如下(通過vim打開)img04

基本格式**???*???*???*???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?smtplib

from?email?import?encoders

from?email.header?import?Header

from?email.mime.text?import?MIMEText

from?email.mime.base?import?MIMEBase

from?email.mime.multipart?import?MIMEMultipart

from?email.utils?import?parseaddr,?formataddrdef?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?'?%?from_addr)

msg['To']?=?self._format_addr('lsgo?'?%?to_addr)

msg['Subject']?=?Header('紅嶺創投',?'utf-8').encode()??#?標題

#?郵件正文

#?msg.attach(MIMEText('……',?'plain',?'utf-8'))

#?添加附件

self.addfile(msg)

try:

server?=?smtplib.SMTP(smtp_server,?25)

server.set_debuglevel(1)

server.starttls()

server.login(from_addr,?password)

server.sendmail(from_addr,?[to_addr],?msg.as_string())

server.quit()

print("郵件發送成功")

except?smtplib.SMTPException:

self.send()

print("Error:?發送郵件失敗,正在重試!")

在郵件中添加附件:def?_format_addr(self,s):

name,?addr=parseaddr(s)

return?formataddr((Header(name,'utf-8').encode(),addr))

def?_getfile(self):

file='/home/lsgo18/PycharmProjects/honglingchuangtou/'

return?[file+'money.png',file+'rate.png']

def?addfile(self,msg):

files=self._getfile()

#設置附件的MIME和文件名

attr1?=?MIMEBase('image',?'png',?filename='file.png')

#必要的頭信息

attr1.add_header('Content-Disposition',?'attachment',?filename=files[0][-9:])

attr1.add_header('Content-ID',?'<0>')

attr1.add_header('X-Attachment-Id',?'0')

#讀取附件內容

attr1.set_payload(open(files[0],?'rb+').read())

#用Base64編碼

encoders.encode_base64(attr1)

#添加到MIMEMuptipart

msg.attach(attr1)

#?附件2

attr2?=?MIMEBase('image',?'png',?filename='file.png')

attr2.add_header('Content-Disposition',?'attachment',filename=files[1][-8:])

attr2.add_header('Content-ID',?'<0>')

attr2.add_header('X-Attachment-Id',?'0')

attr2.set_payload(open(files[1],?'rb').read())

encoders.encode_base64(attr2)

msg.attach(attr2)

到這里,任務就全部搞定了。怎么樣,感興趣的同學也可以按照思路來玩一下。今天就到這里吧,See You!

本篇圖文由團隊 余江銀 同學提供,他的 CSDN Blog 地址為:

https://blog.csdn.net/YYYYYJY

總結

以上是生活随笔為你收集整理的python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。