232
火車采集器
網頁抓取工具火車采集器發布模塊製作示例
網頁抓取工具火車采集器發布模塊製作示例
作者:dong 發布於:2016-5-3 16:03 Tuesday 分類:官方公告
何為WEB發布模塊?即在使用火車采集器V9時將用戶手動在網站後台發布內容的整個過程包含登錄網站後台,選擇欄目,以及發布文章等步驟寫入火車采集器V9,由火車采集器來模擬,實現自動發布的功能,這就是WEB發布模塊。然後規則采集到的值就通過標簽名傳遞給在線發布模塊,把數據提交到網站裏去。這裏以dedecms的文章發布為例做講解,下麵為操作示例:
一、點擊web發布配置——新建模塊
上圖中的菜單分別為:
網站自動登錄:設置網站登錄信息的數據
獲取欄目列表:設置發布的欄目列表
網頁隨機獲取:設置post數據內的隨機值
內容發布參數:設置發布頁麵POST數據包
高級功能:文件上傳設置以及數據構造
二、“WEB發布設置界麵”和 “內容發布參數” 設置
我們在發布頁麵填寫好需要發布的字段值(先不要點擊發布),然後打開fiddler(注意,如果有較亂的數據流,請先Ctrl+X 清空數據流)
如圖,填寫標題、來源、選擇欄目、內容 :
Ctrl+X 清空數據流後的fiddler:
此時點擊發布,分析fiddler裏的數據包,將fiddler點擊 ①➯ ② ,依次點擊數據流列表⑤ 找到POST類型的數據流⑥,
然後點擊⑦ 以文本的形式查看
數據包貼出如下:
POST https://127.0.0.1:801/dede/dede/article_add.php HTTP/1.1
Host: 127.0.0.1:801
Connection: keep-alive
Content-Length: 3571
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: https://127.0.0.1:801
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary6EWX666GAXOVqWCE
Referer: https://127.0.0.1:801/dede/dede/article_add.php?channelid=1&cid=0
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=f21a42f70199c81955f3219623343735;
DedeUserID=1; DedeUserID__ckMd5=91a12e3e1eae3a4d; DedeLoginTime=1444806848;
DedeLoginTime__ckMd5=65d5fa4845a7ec00;
ENV_GOBACK_URL=%2Fdede%2Fdede%2Fcontent_list.php%3Fchannelid%3D1
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="channelid"
1
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="dopost"
save
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="title"
11111
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="shorttitle"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="redirecturl"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="tags"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="weight"
99
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="picname"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="litpic"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="source"
22222
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="writer"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="typeid"
2
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="typeid2"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="keywords"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="autokey"
1
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="description"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="dede_addonfields"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="remote"
1
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="autolitpic"
1
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="needwatermark"
1
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="sptype"
hand
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="spsize"
5
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="body"
222222222222222
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="voteid"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="notpost"
0
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="click"
137
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="sortup"
0
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="color"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="arcrank"
0
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="money"
0
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="pubdate"
2015-10-14 15:16:06
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="ishtml"
1
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="filename"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="templet"
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="imageField.x"
37
------WebKitFormBoundary6EWX666GAXOVqWCE
Content-Disposition: form-data; name="imageField.y"
18
------WebKitFormBoundary6EWX666GAXOVqWCE--
三、設置WEB發布配置界麵
根據上麵的數據包得出: 網站編碼是:utf-8 (可以在您的網站右擊查看源代碼,查找charset字段值,具體看編碼)
網站地址是: https://127.0.0.1:801/dede
(網站地址可以根據POST 和Referer字段自定義,一般我們用網站域名做網站地址,
也可以找其他的2個設置的共同部分做網站地址。 )
cookie是:menuitems=1_1%2C2_1%2C3_1; PHPSESSID=f21a42f70199c81955f3219623343735; DedeUserID=1; DedeUserID__ckMd5=91a12e3e1eae3a4d; DedeLoginTime=1444806848; DedeLoginTime__ckMd5=65d5fa4845a7ec00; ENV_GOBACK_URL=%2Fdede%2Fdede%2Fcontent_list.php%3Fchannelid%3D1
user-agent是: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
四、設置 “內容發布參數”
如下圖
然後我們把發布POST數據裏的值替換成標簽。雙擊選中表單值,然後鼠標懸停在標簽按鈕上,對應選擇要替換成的標簽名即可,
可選係統標簽,常用標簽,時間標簽。如下圖替換的效果:
標題,來源,內容,時間 很方便確認識別。
在這裏給大家講解下“[分類ID]” 係統標簽。
此標簽是用於接下來我們的獲取欄目列表設置做鋪墊的。
那麼如何確定 哪個表單名 就是 [分類ID]呢?
可以按如下圖的方法,就很簡單的知道,typeid 就是我們要找的 [分類ID],給對應替換即可。
五、確定“獲取欄目列表” 設置
首先要確定我們的選擇欄目列表是在哪個頁麵?一般有兩種情況:
A.最常見的一種,欄目選擇就是在發布內容頁麵裏,類似我們演示的DEDE文章發布。B.特殊的情況,在其它頁麵下,不在發布內容頁麵。
在這裏我們講解A種情況,把“內容發布參數” 下的來源頁麵後綴的設置,拿過來直接使用即可。放入到“獲取欄目列表”
下的發表地址後綴,和來源頁麵後綴中。然後再查看發布頁麵的源代碼,找到刷新列表部分的源碼,
確定欄目列表的開始和結束代碼,以及格式。
ID 用[分類ID]替換
欄目名稱用 [分類名稱]替換
不規則出現的代碼 用 (*)通配符匹配
設置如圖:
可以發布,說明我們的 “內容發布參數” 設置沒問題。
現在我們保存發布模塊,大概測試下發布效果,可以刷新列表,說明“獲取欄目列表”的設置沒有問題。
六、完善模塊
成功,失敗標識碼:
可以看到在網站發布正常的內容,和發布失敗的內容(比如不填寫標題,不選擇欄目)看看分別的提示,
然後寫入模塊設置,多個提示一行一個。
高級功能:
可以看到我們此模塊有個 LITPIC 表單名字段,這是我們在“內容發布參數” 的黏貼POST數據時,自動提取的設置。
在這裏,我們可以自定義修改標簽名,如設置為縮略圖。
文件上傳設置裏的標簽,文件上傳不需要設置FTP,隻要下載到本地就可以實現自動上傳操作。
網站自動登錄:
之前我們做的發布是在登錄方式為內置瀏覽器的原理基礎上獲取cookie和User-agent 來做發布的。
我們也可以用數據包登錄的方式來設置。其設置原理和“內容發布參數”是一樣的,
用fiddler工具抓取登錄後台那一瞬間的POST數據包。
POST https://127.0.0.1:801/dede/dede/login.php HTTP/1.1
Host: 127.0.0.1:801
Connection: keep-alive
Content-Length: 112
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: https://127.0.0.1:801
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: https://127.0.0.1:801/dede/dede/login.php?gotopage=%2Fdede%2Fdede%2Findex.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=f21a42f70199c81955f3219623343735;
ENV_GOBACK_URL=%2Fdede%2Fdede%2Fcontent_list.php%3Fchannelid%3D1
gotopage=%2Fdede%2Fdede%2Findex.php&dopost=login&adminstyle=newdedecms&userid=admin&pwd=admin&validate=lcmt&sm1=
設置如下:
測試效果:
到這裏就基本ok了,這樣模塊用內置瀏覽器登錄或數據包登錄都可以支持,一個完整的發布模塊就完成了,如有疑問可以訪問網頁抓取工具火車采集器V9的官方網站(www.locoy.com)了解或谘詢官方客服。
最後更新:2017-05-09 01:06:04