linux python wps doc 转 txt_耗时一周尝试踩坑,整理了一些Python实用知识点
很零碎的知識點,有的是踩過的坑,不成系統,但是絕對很有用,知道的可以回顧下,不太了解的可以多學習下
1、Python連接MySQL加編碼
記得加charset,沒加的話部署Linux服務器運行可能有中文亂碼,已踩坑
2、最好用utf8mb4
很多時候我會用sqlalchemy創建連接數據庫引擎,charset用的utf8mb4,原因在于爬取的文本中有表情,utf8不行,同時,數據庫、表,編碼也都要保持一致
3、好用的網頁解析庫PyQuery
from?pyquery?import?PyQuery?as?py覺得好用的原因:
1、語法類似JQuery,好記
2、可以增刪改查html元素,然后下載網頁,這點xpath就比較弱了,下面是我最近用到的一些方法,其他方法可以網上查查
# 爬蟲下載網頁each_res = requests.get(url).content.decode("utf-8")
# 轉為pyquery文檔
doc =?py(each_res)
# 支持Class選擇器,remove用來刪除元素
doc(".site-navbar ul")("li").remove()
# 支持ID選擇器
doc("#search-form").remove()
# 獲取屬性href的值
doc(".pagemenu")("li:first-child")("a").attr["href"]
# 設置屬性href的值
doc(".pagemenu")("li:first-child")("a").attr("href",?"./")
# 遍歷對象
images_src = doc("img")
for?img in images_src:
??if?py(img).attr["src"]:
? ?print(py(img).attr["src"])
# 添加元素
doc("head").append('\n')
# 清空后在添加
doc(".page-right .item").empty().append("")
# 完美匹配jquery的eq()選擇方法
doc(".article-content")("div:last-child").eq(-1).remove()
# 大招來了,可以將上面增刪改查的文檔,直接寫入html文件,就下載好網頁了
res?= doc.outer_html().encode("utf-8")
with?open("index.html",?"wb")?as?f:
# 寫文件用bytes而不是str,所以要轉碼
? ?f.write(res)
4、Linux配置python3環境、pip軟鏈接
下方分別為解壓安裝,配軟連接,注意配python3和pip的時候,與/usr/bin下面的原本的python2和pip命名區分,一般情況下別去動python2的軟鏈接,會導致centos包管理工具yum命令出問題
ln?-s /usr/local/py365/bin/python3.6?/usr/bin/python3?ln?-s /usr/local/py365/bin/pip3 /usr/bin/pip3
5、網站地圖、robots協議
robots.txt可以告訴搜索引擎網站哪些數據能爬,如果你想利于網站排名,盡量少disallow,sitemap.xml網站地圖則是直接提交讓搜索引擎增加收錄,這兩個文件/路徑一般配在網站根目錄下,可以直接寫到nginx加兩個路徑指向就行了,主要用來優化網站,利于各加搜索引擎抓取網站信息,增加收錄和網站排名
location /sitemap.xml {
? ?alias?/var/www/chengxuyuan_12_10/sitemap.xml;
}
location /robots.txt {
? ?alias?/var/www/chengxuyuan_12_10/robots.txt;
}
6、Django orm查詢values
比如下方,我在查詢時候只需要文章的id和title數據,則直接values查這兩個字段就行,這樣可以提高查詢效率
Article.objects.values("id","title")Q對象進行邏輯查詢,也很常用
filter(Q(is_delete=0)&(Q(title__contains=a)|Q(title__contains=b)))7、直接將一個字典保存mysql(鍵和列名一致)
dic = {"title": title,?"time": arttime,?"auth": auth,?"con":?con}df = pd.DataFrame.from_dict(dic, orient='index').T
conn = get_local_engine("centos_test")
df.to_sql("這里是表名", conn, if_exists='append',?index=False)
get_local_engine是我定義的一個獲取engine的方法
def?get_local_engine(dbname):db_flag =?"mysql"
host_ip =?"127.0.0.1"?
host_port =?3306
db_instance = dbname
user =?"root"
pawd =?"*************"?
charset =?"utf8"
engine_config =?'%s%s%s%s%s%s%s%s%s%s%s'?% ('mysql+pymysql://', user,?':', pawd,?'@', host_ip,?':', host_port,?'/', db_instance,?'?charset=utf8')
engine = create_engine(engine_config, encoding=charset, max_overflow=10)
return?engine
8、django admin站點引入富文本編輯器Kindeditor
1、kindeditor安裝包直接放在項目static下面
2、在admin.py中加入這段js
3、kindeditor中config.js改成原本admin文本域的id,如下方截圖圈到的
class?Media:# 在管理后臺的HTML文件中加入js文件, 每一個路徑都會追加STATIC_URL/
?js = (
? ? 'kindeditor/kindeditor-all.js',
? ? 'kindeditor/lang.zh_CN.js',
? ? 'kindeditor/config.js',
?)
編輯器效果圖
python爬蟲人工智能大數據公眾號
總結
以上是生活随笔為你收集整理的linux python wps doc 转 txt_耗时一周尝试踩坑,整理了一些Python实用知识点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: su如何渲染(su怎么切换渲染器)
- 下一篇: 测试硬盘读写速度软件_Linux测试硬盘