python自动生成采集规则_python 织梦自动采集更新脚本
上次分享過一個自動采集入庫的腳本(phpcms的),有童鞋建議改為表單提交形式,畢竟數據庫入庫代碼改動成本比較高,而通過表單post數據只 需改下cookie和頻道id就可以運行起來。所以,這次主要利用pycurl模塊和fiddler抓包工具演示下dedecms是如何提交數據的。
嘗試過dedecms post數據的童鞋可能已經發現,織夢post的數據跟一般數據有些不同,dedecms post數據格式是multipart,利用抓包工具你會發現這樣一串東西:Content-Type: multipart/form-data; boundary=---------------------------249724317605,如:
那么具體該如何提交呢?主要有兩點(post地址、cookie、頻道id之類的問題自己解決):
1,headers增加Content-Type: multipart/form-data,如下圖:
2,通過fiddler把提交的數據下載到本地(點擊下圖紅框另存到到本地,編碼不需更改),命名為data.txt.
data = open('data.txt').read(),data直接作為post表單的數據即可。
實際上到此為止,你已經能夠成功提交了,是不是很簡單。
實際使用中,我們總不能把要更新的文章標題和內容寫到txt里,如何把title、content等變成變量?一行代碼即可搞定:
data = data.replace('title@123456',title).replace('content@123456',content)
只要把data.txt文章標題的文字改為'title@123456',內容改為'content@123456',然后把他們替換掉即可。下面是完整代碼地址:
# coding:utf-8
import pycurl,StringIO
import sys
reload(sys)
sys.setdefaultencoding('utf8')
headers = [
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
"Cookie:PHPSESSID=a8p9lr4jksj5kh9k3nhjaa5pu7; DedeUserID=1; DedeUserID__ckMd5=0023ecbe319d14d9; DedeLoginTime=1470919547; DedeLoginTime__ckMd5=b05a3b1e5c4bce22",
"Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS1tN0Ueh3In2YSN8",
]
def curl(url):
c = pycurl.Curl()
c.setopt(pycurl.REFERER, 'http://yourdomain.com/dede/article_add.php?channelid=1')
c.setopt(pycurl.FOLLOWLOCATION, True)
c.setopt(pycurl.MAXREDIRS,5)
c.setopt(pycurl.CONNECTTIMEOUT, 60)
c.setopt(pycurl.TIMEOUT,120)
c.setopt(pycurl.ENCODING, 'gzip,deflate')
# c.setopt(c.PROXY,ip)
c.fp = StringIO.StringIO()
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER,headers)
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(c.WRITEFUNCTION, c.fp.write)
c.perform()
code = c.getinfo(c.HTTP_CODE)#返回狀態碼
html = c.fp.getvalue()#返回源代碼
return html
title = 'ITSEO培訓怎么樣'.encode('gbk','ignore')
content = 'TSEO講師 多年excel實戰經驗任職某通訊公司seo崗位,長期接觸各類... 關注 私信 夜息 ITSEO創始人 ITSEO創始人,原途牛seo負責人。SEO顧問服務過多個行...'.encode('gbk','ignore')
data = open('data.txt').read()
data = data.replace('title@123456',title).replace('content@123456',content)
print curl('http://yourdomain.com/dede/article_add.php')
總結
以上是生活随笔為你收集整理的python自动生成采集规则_python 织梦自动采集更新脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php递归函数名字,php递归示例 ph
- 下一篇: 中班音乐会跳舞的机器人_中班音乐律动机器