import bs4
import requests
import pandas as pd
import cx_oracle as cx
from datetime import datetime
time=datetime.now(
).strftime(
'%y-%m-%d'
)#獲取當前系統時間 並規定格式
n_url=
'所需要爬取的**'
# **
header_dic=
respon=requests.get(n_url)
#用get解析**
#print(respon)
#print(respon.text)
soup=bs4.beautifulsoup(respon.text,
'html.parser'
)#用bs4來解析得到的文字
#print(soup)
div_hq=soup.select(
'tbody tr'
)#運用select選擇器來找到所要爬取的資料的標籤
list1=
#建立乙個列表並把遍歷的資料去空格寫到列表裡
for temp in div_hq:
temp = temp.text.split(
)#去空格
#print(list1)
temp=pd.dataframe(list1)
#用df的方法整合**
temp=temp.fillna(
'0')
#pandas裡把所有空值用0替換
#print(temp)
temp.columns=
['a'
,'b'
,'c'
,'d'
]temp=temp.reindex(columns=
['time'
,'a'
,'b'
,'c'
,'d'
],fill_value=time)
#reindex重新設定列 在最前面插入一列
#print(temp)
conn = cx.connect(
'ytsj2019/[email protected]:1521/kfzxsjtb'
)#建立連線
db = conn.cursor(
)# 獲得游標 游標作用,其實和迴圈差不多,就是你把資料放在游標裡面,然後使用游標一行一行的取得資料。最終達到迴圈處理資料的目的
val=
[tuple
(i)for i in temp.values]
#df**的值 遍歷並轉換成元組 val是這個格式的[(),()]
for j in
range
(len
(temp)):
#原資料的長度
#資料太長 做個字串拼接
sqlstr=
"insert into 表名(列名1,列名2,列名3,列名4)"
#下面一行要寫成oracle可以執行的語句下面都是oracle的轉換型別的函式
sqlstr+=
"values (to_date('"
+val[j][0
]+"','yyyy-mm-dd')"
+",'"
+str
(val[j][1
])+"',to_number("
+str
(val[j][2
])+"),to_number("
+str
(val[j][3
])+"))"
print
(sqlstr)
db.execute(sqlstr)
#逐行寫入
conn.commit(
)#提交
conn.close(
)#關閉連線
Python中用print方法向檔案中寫入內容
乙個小功能,我就是想用print功能實現,不想用write import os os.chdir usr tem char my name is yangyanxing f open test.txt w print f,char但是python3中還可以用以下的方式 import os os.ch...
springboot向elk寫日誌
springboot裡連線elk裡的logstash,然後寫指定index索引的日誌,而之後使用kibana去查詢和分析日誌,使用elasticsearch去儲存日誌。implementation net.logstash.logback logstash logback encoder 5.3 d...
Python在向CSV檔案寫中文時亂碼的處理辦法
python2最大的坑在於中文編碼問題,遇到中文報錯首先加u,再各種encode decode。當list tuple dict裡面有中文時,列印出來的是unicode編碼,這個是無解的。對中文編碼糾結的建議盡快換python3吧,python2且用且珍惜!1.open開啟csv檔案,用writer...