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

歡迎訪問 生活随笔!

生活随笔

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

python

python 爬网页 发布wordpress 包含图片_使用python批量插入wordpress-从理清表结构开始...

發布時間:2024/9/30 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 爬网页 发布wordpress 包含图片_使用python批量插入wordpress-从理清表结构开始... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python or php建站?

說實話,php能看懂,寫的話就再需要熟悉一下語法。python建站需要從頭開始。包括模板、cms、都沒有php下的wordpress多。插件上也是wordpress有絕對的優勢。自己一直寫的python后臺,前端頁面放個一兩年真是連個毛都不剩下了。仔細考慮了一些,還是決定使用wordpress搭建自己的小博客玩一玩。隨便下載了一個wordpress,本地搭建起來后,分析了一下wordpress數據庫表的關系。把幾個主要的表格梳理了一下,以下是簡單的記錄。(非專業php,僅從后端角度簡單分析,如有大師路過,勿噴)。

目標網站

就以之前看到的三人行書屋為例:三人行書屋截圖如下。

這個網站用插件分析了一下,用的是[GIt](https://gitcafe.net/archives/3589.html)主題。頁面的主要分析點截圖中標紅框-文章目錄、文章、文章標簽。涉及的表有:wp_terms、wp_posts、wp_term_taxonomy、wp_term_ralationships.

這幾個表的功能分別是:

wp_posts:文章存儲表。主要字段:ID-自增ID。post_title-文章的標題。post_excerpt-文章簡介

?wp_terms: 標簽、目錄的存儲表。term_id-自增id。name-標簽或目錄的名稱。slug-urlencode后的內容。

?wp_term_taxonmy: 目錄、標簽的描述信息,主要字段:term_taxonomy_id-該表的自增id,term_id-對應上面的wp_terms的term_id,taxonomy- 目錄或者標簽(category or post_tag),count:計數器,對應截圖中的標簽下的數字。

wp_term_relationships: wp_terms 和 wp_posts的關聯表。也就是說,這張表決定了一篇文章就是是什么目錄,有什么標簽。主要字段:object_id - 對應的是wp_posts中的ID。term_taxonomy_id對應的是wp_term_taxonomy中的term_taxonomy_id。object_id、term_taxonomy_id 是多對多的關系。

文章分析是基于在wordpress中實際編輯文章及目錄標簽等,然后觀察每個表格的變化,分析較為簡單粗暴。但是基本上能夠作為二次開發的基礎使用了。

我是怎么進行二次開發的

說是二次開發,其實并沒有什么具體的目標,沒想好建立什么網站。就當前期的熱身活動,熟悉和驗證結論是否正確。我還是使用我最熟悉的python作為開發語言。

找到目標網站,爬取一些內容-包括標題,目錄分類,標簽,作為素材

具體哪個網站就不透露了。大多數網站這都有我們所需的元素。使用python簡單編寫了scrapy爬蟲(簡單點的直接用requests爬了),我們需要用到的素材均作單獨字段存儲。

腳本批量處理文章

我推薦比較好的做法是使用sqlalchemy對源數據表和wp數據表進行建模。然后根據wp各個表的關系做事務插入。即使用一個session對上面提到的幾個表做完整性的數據插入。

這里推薦一個快速生成數據模型的工具,配合sqlalchemy使用事半功倍。sqlacodegen

具體操作方法:

1. pip install sqlacodegen

2. sqlacodegen --outfile=models.py mysql://root:guess@192.168.1.250:3306/test

第二部操作是對整個庫的建模,當然也可以選擇對某張表進行建模。

sqlacodegen --outfile=models.py mysql://root:guess@192.168.1.250:3306/test --tables teacher,student

我具體的處理邏輯,部分偽代碼如下(寫的太亂,只能拿出部分偽代碼獻丑了)

post = spider_session.query(SpiderData).filter(SpiderData.id == 1) # 從爬蟲庫中選出一條

...

# wordpress 數據庫插入

wp_post = WpPost()

wp_post.post_title = post.article_name

wp_post.post_content = post.content

wp_post.post_excerpt = post.short_introduction

wp_post.post_status = "publish"

session_wp.add(wp_post)

session_wp.commit()

# 一下是wp_terms表,term表可以提前把標簽和分類先做插入,這里只做查詢

terms = spider_session.query(SpiderData).filter(SpiderData.id == 1).all()

# 插入wp_terms

for term in terms:

# 在wp_terms 中找到這個標簽對應的id。前提是你已經插入。

term_id = session_wp.query(WpTerm).filter(WpTerm.name == term.name).first()

# 對wp_term_relationships進行處理

object_id = wp_post.ID

wp_relationship = WpTermRelationships()

wp_relationship.object_id = object_id

wp_relationship.term_id = term_id

session_wp.add(wp_relationship)

session_wp.commit()

以上代碼只是提供思路實際應用中注意異常處理等。

寫這篇文章的時候距離完成我的小demo網站已經有一段時間了。方向是技術博客類型。

還能想起但是第一次接觸wordpress時的一臉懵逼,沉下心研究一段時間你就會發現,原來很多事情在你全力做了之后就會變得很簡單。

以上。

總結

以上是生活随笔為你收集整理的python 爬网页 发布wordpress 包含图片_使用python批量插入wordpress-从理清表结构开始...的全部內容,希望文章能夠幫你解決所遇到的問題。

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