谷歌瀏覽器
3款你必須曉得的爬蟲(chóng)工具
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 318 次瀏覽 ? 2020-05-31 08:01
微信公眾號:Python數據科學(xué)
知乎:
本篇博主將和你們分享幾個(gè)特別有用的爬蟲(chóng)小工具,這些小工具在實(shí)際的爬蟲(chóng)的開(kāi)發(fā)中會(huì )大大降低你的時(shí)間成本,并同時(shí)提升你的工作效率,真的是十分實(shí)用的工具。
這些工具當然是Google上的插件,一些擴充程序,并且經(jīng)博主親測,無(wú)任何問(wèn)題。最后的最后,博主將提供小工具的獲取方法。
好了,話(huà)不多說(shuō),我們來(lái)介紹一下。
我們上面提及過(guò),當客戶(hù)端向服務(wù)器端提出<ajax>異步懇求(比如 <xhr>)時(shí),會(huì )在響應里返回 <json> 格式的數據。
在開(kāi)發(fā)者工具中,我們會(huì )聽(tīng)到 <json> 格式數據的可視化療效太差,就是一段繁雜的字符串,難以直接看出關(guān)鍵信息。
那么為了直接有效的找到關(guān)鍵信息,<JSON-handle>工具會(huì )將紛繁的 <json> 格式數據弄成簡(jiǎn)單清晰的樹(shù)形圖,極大的提升可視化療效。
方法很簡(jiǎn)單,如果你已然安裝好了小工具,點(diǎn)開(kāi)圖標彈出框框,把<json>數據復制進(jìn)去即可。
當然,你也可以把從任意地方用來(lái)的<json>數據放進(jìn)去,不局限于瀏覽器異步響應。
就以<天貓網(wǎng)站>為例,隨便找出一個(gè)異步的懇求,response是下邊這樣的。
jsonp_46336857({"201509290":{"data":[{"_pos_":1,"entityType":"13","acm":"201509290.1003.1.1286473","title":"【搶券減400】Apple/蘋(píng)果iPhone X 全網(wǎng)通4G智能手機蘋(píng)果10 蘋(píng)果X","typ.......
把代碼放進(jìn)框框里,點(diǎn)擊OK,就弄成下邊這樣了數(據比較長(cháng),只截取一部分)。
上篇剖析爬蟲(chóng)中HTTP的秘密(基礎篇)我們介紹了懇求頭,而這個(gè)工具就是針對懇求頭中的User-Agent數組的。它的作用是可以隨便更換瀏覽器的User-Agent。
比如,你用Chrome瀏覽器瀏覽網(wǎng)頁(yè),瀏覽器默認身分是Chrome,但是你可以通過(guò)這個(gè)工具更換成其它任何身分。
這個(gè)最大的益處就是可以直接更換成手機身分瀏覽網(wǎng)頁(yè),而毋須用開(kāi)發(fā)者工具來(lái)回切換。
使用Chrome瀏覽器安裝插件爬蟲(chóng)工具,點(diǎn)開(kāi)圖標,選擇你須要的身分即可。
?。JChrome瀏覽器是這樣的)
?。ㄗ儞Q為IOS-iphone6)
針對Xpath解析方式,Xpath-Helper可提供當前網(wǎng)頁(yè)指定Xpath句子的查詢(xún)結果。
點(diǎn)開(kāi)圖標,出現白色框框。
1.假設目標為二維碼下的<百度>二字
2.開(kāi)發(fā)者工具找到源碼相應位置,右鍵copy xpath
3.復制到QUERY上面,結果手動(dòng)下來(lái)
注:Xpath-Helper小工具安裝后須要重啟Chrome方可使用爬蟲(chóng)工具,請你們注意一下這個(gè)坑。
下載Chrome瀏覽器下載小工具插件打開(kāi)Chrome更多工具—>擴展程序拖動(dòng)小工具插件程序<.crx>到擴充程序里安裝
安裝完成后,右上角會(huì )有三個(gè)小圖標: 查看全部
作者:xiaoyu
微信公眾號:Python數據科學(xué)
知乎:
本篇博主將和你們分享幾個(gè)特別有用的爬蟲(chóng)小工具,這些小工具在實(shí)際的爬蟲(chóng)的開(kāi)發(fā)中會(huì )大大降低你的時(shí)間成本,并同時(shí)提升你的工作效率,真的是十分實(shí)用的工具。
這些工具當然是Google上的插件,一些擴充程序,并且經(jīng)博主親測,無(wú)任何問(wèn)題。最后的最后,博主將提供小工具的獲取方法。
好了,話(huà)不多說(shuō),我們來(lái)介紹一下。
我們上面提及過(guò),當客戶(hù)端向服務(wù)器端提出<ajax>異步懇求(比如 <xhr>)時(shí),會(huì )在響應里返回 <json> 格式的數據。
在開(kāi)發(fā)者工具中,我們會(huì )聽(tīng)到 <json> 格式數據的可視化療效太差,就是一段繁雜的字符串,難以直接看出關(guān)鍵信息。
那么為了直接有效的找到關(guān)鍵信息,<JSON-handle>工具會(huì )將紛繁的 <json> 格式數據弄成簡(jiǎn)單清晰的樹(shù)形圖,極大的提升可視化療效。
方法很簡(jiǎn)單,如果你已然安裝好了小工具,點(diǎn)開(kāi)圖標彈出框框,把<json>數據復制進(jìn)去即可。
當然,你也可以把從任意地方用來(lái)的<json>數據放進(jìn)去,不局限于瀏覽器異步響應。
就以<天貓網(wǎng)站>為例,隨便找出一個(gè)異步的懇求,response是下邊這樣的。
jsonp_46336857({"201509290":{"data":[{"_pos_":1,"entityType":"13","acm":"201509290.1003.1.1286473","title":"【搶券減400】Apple/蘋(píng)果iPhone X 全網(wǎng)通4G智能手機蘋(píng)果10 蘋(píng)果X","typ.......
把代碼放進(jìn)框框里,點(diǎn)擊OK,就弄成下邊這樣了數(據比較長(cháng),只截取一部分)。
上篇剖析爬蟲(chóng)中HTTP的秘密(基礎篇)我們介紹了懇求頭,而這個(gè)工具就是針對懇求頭中的User-Agent數組的。它的作用是可以隨便更換瀏覽器的User-Agent。
比如,你用Chrome瀏覽器瀏覽網(wǎng)頁(yè),瀏覽器默認身分是Chrome,但是你可以通過(guò)這個(gè)工具更換成其它任何身分。
這個(gè)最大的益處就是可以直接更換成手機身分瀏覽網(wǎng)頁(yè),而毋須用開(kāi)發(fā)者工具來(lái)回切換。
使用Chrome瀏覽器安裝插件爬蟲(chóng)工具,點(diǎn)開(kāi)圖標,選擇你須要的身分即可。
?。JChrome瀏覽器是這樣的)
?。ㄗ儞Q為IOS-iphone6)
針對Xpath解析方式,Xpath-Helper可提供當前網(wǎng)頁(yè)指定Xpath句子的查詢(xún)結果。
點(diǎn)開(kāi)圖標,出現白色框框。
1.假設目標為二維碼下的<百度>二字
2.開(kāi)發(fā)者工具找到源碼相應位置,右鍵copy xpath
3.復制到QUERY上面,結果手動(dòng)下來(lái)
注:Xpath-Helper小工具安裝后須要重啟Chrome方可使用爬蟲(chóng)工具,請你們注意一下這個(gè)坑。
下載Chrome瀏覽器下載小工具插件打開(kāi)Chrome更多工具—>擴展程序拖動(dòng)小工具插件程序<.crx>到擴充程序里安裝
安裝完成后,右上角會(huì )有三個(gè)小圖標:
基于chrome插件的爬蟲(chóng)可視化點(diǎn)選配置工具
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 369 次瀏覽 ? 2020-05-29 08:01
Chrome插件沒(méi)有嚴格的項目結構要求,只要保證本目錄有一個(gè)manifest.json即可,也不需要專(zhuān)門(mén)的IDE,普通的web開(kāi)發(fā)工具即可。
從右上角菜單->更多工具->擴展程序可以步入 插件管理頁(yè)面,也可以直接在地址欄輸入chrome://extensions 訪(fǎng)問(wèn)。
網(wǎng)上介紹chrome插件開(kāi)發(fā)的文章已經(jīng)好多了,這里就不贅言了,只列一些項目中須要的
這是一個(gè)Chrome插件最重要也是必不可少的文件,用來(lái)配置所有和插件相關(guān)的配置,必須置于根目錄。其中,manifest_version、name、version3個(gè)是必不可少的,description和icons是推薦的。
下面給出的是一些常見(jiàn)的配置項,均有英文注釋
{
// 清單文件的版本,這個(gè)必須寫(xiě),而且必須是2
"manifest_version": 2,
// 插件的名稱(chēng)
"name": "demo",
// 插件的版本
"version": "1.0.0",
// 插件描述
"description": "簡(jiǎn)單的Chrome擴展demo",
// 圖標,一般偷懶全部用一個(gè)尺寸的也沒(méi)問(wèn)題
"icons":
{
"16": "img/icon.png",
"48": "img/icon.png",
"128": "img/icon.png"
},
// 會(huì )一直常駐的后臺JS或后臺頁(yè)面
"background":
{
// 2種指定方式,如果指定JS,那么會(huì )自動(dòng)生成一個(gè)背景頁(yè)
"page": "background.html"
//"scripts": ["js/background.js"]
},
// 瀏覽器右上角圖標設置,browser_action、page_action、app必須三選一
"browser_action":
{
"default_icon": "img/icon.png",
// 圖標懸停時(shí)的標題,可選
"default_title": "這是一個(gè)示例Chrome插件",
"default_popup": "popup.html"
},
// 當某些特定頁(yè)面打開(kāi)才顯示的圖標
/*"page_action":
{
"default_icon": "img/icon.png",
"default_title": "我是pageAction",
"default_popup": "popup.html"
},*/
// 需要直接注入頁(yè)面的JS
"content_scripts":
[
{
//"matches": ["http://*/*", "https://*/*"],
// "<all_urls>" 表示匹配所有地址
"matches": ["<all_urls>"],
// 多個(gè)JS按順序注入
"js": ["js/jquery-1.8.3.js", "js/content-script.js"],
// JS的注入可以隨便一點(diǎn),但是CSS的注意就要千萬(wàn)小心了,因為一不小心就可能影響全局樣式
"css": ["css/custom.css"],
// 代碼注入的時(shí)間,可選值: "document_start", "document_end", or "document_idle",最后一個(gè)表示頁(yè)面空閑時(shí),默認document_idle
"run_at": "document_start"
},
// 這里僅僅是為了演示content-script可以配置多個(gè)規則
{
"matches": ["*://*/*.png", "*://*/*.jpg", "*://*/*.gif", "*://*/*.bmp"],
"js": ["js/show-image-content-size.js"]
}
],
// 權限申請
"permissions":
[
"contextMenus", // 右鍵菜單
"tabs", // 標簽
"notifications", // 通知
"webRequest", // web請求
"webRequestBlocking",
"storage", // 插件本地存儲
"http://*/*", // 可以通過(guò)executeScript或者insertCSS訪(fǎng)問(wèn)的網(wǎng)站
"https://*/*" // 可以通過(guò)executeScript或者insertCSS訪(fǎng)問(wèn)的網(wǎng)站
],
// 普通頁(yè)面能夠直接訪(fǎng)問(wèn)的插件資源列表,如果不設置是無(wú)法直接訪(fǎng)問(wèn)的
"web_accessible_resources": ["js/inject.js"],
// 插件主頁(yè),這個(gè)很重要,不要浪費了這個(gè)免費廣告位
"homepage_url": "https://www.baidu.com",
// 覆蓋瀏覽器默認頁(yè)面
"chrome_url_overrides":
{
// 覆蓋瀏覽器默認的新標簽頁(yè)
"newtab": "newtab.html"
},
// Chrome40以前的插件配置頁(yè)寫(xiě)法
"options_page": "options.html",
// Chrome40以后的插件配置頁(yè)寫(xiě)法,如果2個(gè)都寫(xiě),新版Chrome只認后面這一個(gè)
"options_ui":
{
"page": "options.html",
// 添加一些默認的樣式,推薦使用
"chrome_style": true
},
// 向地址欄注冊一個(gè)關(guān)鍵字以提供搜索建議,只能設置一個(gè)關(guān)鍵字
"omnibox": { "keyword" : "go" },
// 默認語(yǔ)言
"default_locale": "zh_CN",
// devtools頁(yè)面入口,注意只能指向一個(gè)HTML文件,不能是JS文件
"devtools_page": "devtools.html"
}
所謂content-scripts,其實(shí)就是Chrome插件中向頁(yè)面注入腳本的一種方式(雖然名為script,其實(shí)還可以包括css的),借助content-scripts我們可以實(shí)現通過(guò)配置的形式輕松向指定頁(yè)面注入JS和CSS(如果須要動(dòng)態(tài)注入,可以參考下文),最常見(jiàn)的例如:廣告屏蔽、頁(yè)面CSS訂制,等等。
示例配置:
{
// 需要直接注入頁(yè)面的JS
"content_scripts":
[
{
//"matches": ["http://*/*", "https://*/*"],
// "<all_urls>" 表示匹配所有地址
"matches": ["<all_urls>"],
// 多個(gè)JS按順序注入
"js": ["js/jquery-1.8.3.js", "js/content-script.js"],
// JS的注入可以隨便一點(diǎn),但是CSS的注意就要千萬(wàn)小心了,因為一不小心就可能影響全局樣式
"css": ["css/custom.css"],
// 代碼注入的時(shí)間,可選值: "document_start", "document_end", or "document_idle",最后一個(gè)表示頁(yè)面空閑時(shí),默認document_idle
"run_at": "document_start"
}
],
}
特別注意,如果沒(méi)有主動(dòng)指定run_at為document_start(默認為document_idle),下面這些代碼是不會(huì )生效的
document.addEventListener('DOMContentLoaded', function()
{
console.log('我被執行了!');
});
content-scripts和原始頁(yè)面共享DOM,但是不共享JS,如要訪(fǎng)問(wèn)頁(yè)面JS(例如某個(gè)JS變量),只能通過(guò)`injected
js來(lái)實(shí)現。content-scripts不能訪(fǎng)問(wèn)絕大部分chrome.xxx.api`,除了下邊這4種:
由于content-script可以注入到頁(yè)面,所以我們即將開(kāi)發(fā)的插件的主要功能就在這里
后臺(姑且如此翻譯吧)爬蟲(chóng)軟件增加網(wǎng)頁(yè)訪(fǎng)問(wèn),是一個(gè)常駐的頁(yè)面,它的生命周期是插件中所有類(lèi)型頁(yè)面中最長(cháng)的,它隨著(zhù)瀏覽器的打開(kāi)而打開(kāi),隨著(zhù)瀏覽器的關(guān)掉而關(guān)掉,所以一般把須要仍然運行
的、啟動(dòng)就運行的、全局的代碼放到background上面。
background的權限十分高,幾乎可以調用所有的Chrome擴充API(除了devtools),而且它可以無(wú)限制跨域,也就是可以跨域訪(fǎng)問(wèn)任何網(wǎng)站而無(wú)需要
求對方設置CORS。
經(jīng)過(guò)測試,其實(shí)不止是background,所有的直接通過(guò)chrome-extension://id/xx.html這些方法打開(kāi)的網(wǎng)頁(yè)都可以無(wú)限制跨域。
配置中,background可以通過(guò)page指定一張網(wǎng)頁(yè),也可以通過(guò)scripts直接指定一個(gè)JS,Chrome會(huì )手動(dòng)為這個(gè)JS生成一個(gè)默認的網(wǎng)頁(yè):
{
// 會(huì )一直常駐的后臺JS或后臺頁(yè)面
"background":
{
// 2種指定方式,如果指定JS,那么會(huì )自動(dòng)生成一個(gè)背景頁(yè)
"page": "background.html"
//"scripts": ["js/background.js"]
},
}
這里順帶介紹一下event-pages,它是一個(gè)哪些東西呢?鑒于background生命周期很長(cháng),長(cháng)時(shí)間掛載后臺可能會(huì )影響性能,所以Google又弄一個(gè)event-pages,在配置文件上,它與background的惟一區別就是多了一個(gè)persistent參數:
{
"background":
{
"scripts": ["event-page.js"],
"persistent": false
},
}
它的生命周期是:在被須要時(shí)加載,在空閑時(shí)被關(guān)閉,什么叫被須要時(shí)呢?比如第一次安裝、插件更新、有content-script向它發(fā)送消息,等等。
我們要開(kāi)發(fā)的插件目前用到了background和content_scripts這兩個(gè)選項,如果之后添加新功能時(shí)再瞧瞧其他的選項爬蟲(chóng)軟件增加網(wǎng)頁(yè)訪(fǎng)問(wèn),對chrome插件開(kāi)發(fā)感興趣的朋友可以瞧瞧這本書(shū) 查看全部
Chrome插件是一個(gè)用Web技術(shù)開(kāi)發(fā)、用來(lái)提高瀏覽器功能的軟件,它雖然就是一個(gè)由HTML、CSS、JS、圖片等資源組成的一個(gè).crx后綴的壓縮包.
Chrome插件沒(méi)有嚴格的項目結構要求,只要保證本目錄有一個(gè)manifest.json即可,也不需要專(zhuān)門(mén)的IDE,普通的web開(kāi)發(fā)工具即可。
從右上角菜單->更多工具->擴展程序可以步入 插件管理頁(yè)面,也可以直接在地址欄輸入chrome://extensions 訪(fǎng)問(wèn)。
網(wǎng)上介紹chrome插件開(kāi)發(fā)的文章已經(jīng)好多了,這里就不贅言了,只列一些項目中須要的
這是一個(gè)Chrome插件最重要也是必不可少的文件,用來(lái)配置所有和插件相關(guān)的配置,必須置于根目錄。其中,manifest_version、name、version3個(gè)是必不可少的,description和icons是推薦的。
下面給出的是一些常見(jiàn)的配置項,均有英文注釋
{
// 清單文件的版本,這個(gè)必須寫(xiě),而且必須是2
"manifest_version": 2,
// 插件的名稱(chēng)
"name": "demo",
// 插件的版本
"version": "1.0.0",
// 插件描述
"description": "簡(jiǎn)單的Chrome擴展demo",
// 圖標,一般偷懶全部用一個(gè)尺寸的也沒(méi)問(wèn)題
"icons":
{
"16": "img/icon.png",
"48": "img/icon.png",
"128": "img/icon.png"
},
// 會(huì )一直常駐的后臺JS或后臺頁(yè)面
"background":
{
// 2種指定方式,如果指定JS,那么會(huì )自動(dòng)生成一個(gè)背景頁(yè)
"page": "background.html"
//"scripts": ["js/background.js"]
},
// 瀏覽器右上角圖標設置,browser_action、page_action、app必須三選一
"browser_action":
{
"default_icon": "img/icon.png",
// 圖標懸停時(shí)的標題,可選
"default_title": "這是一個(gè)示例Chrome插件",
"default_popup": "popup.html"
},
// 當某些特定頁(yè)面打開(kāi)才顯示的圖標
/*"page_action":
{
"default_icon": "img/icon.png",
"default_title": "我是pageAction",
"default_popup": "popup.html"
},*/
// 需要直接注入頁(yè)面的JS
"content_scripts":
[
{
//"matches": ["http://*/*", "https://*/*"],
// "<all_urls>" 表示匹配所有地址
"matches": ["<all_urls>"],
// 多個(gè)JS按順序注入
"js": ["js/jquery-1.8.3.js", "js/content-script.js"],
// JS的注入可以隨便一點(diǎn),但是CSS的注意就要千萬(wàn)小心了,因為一不小心就可能影響全局樣式
"css": ["css/custom.css"],
// 代碼注入的時(shí)間,可選值: "document_start", "document_end", or "document_idle",最后一個(gè)表示頁(yè)面空閑時(shí),默認document_idle
"run_at": "document_start"
},
// 這里僅僅是為了演示content-script可以配置多個(gè)規則
{
"matches": ["*://*/*.png", "*://*/*.jpg", "*://*/*.gif", "*://*/*.bmp"],
"js": ["js/show-image-content-size.js"]
}
],
// 權限申請
"permissions":
[
"contextMenus", // 右鍵菜單
"tabs", // 標簽
"notifications", // 通知
"webRequest", // web請求
"webRequestBlocking",
"storage", // 插件本地存儲
"http://*/*", // 可以通過(guò)executeScript或者insertCSS訪(fǎng)問(wèn)的網(wǎng)站
"https://*/*" // 可以通過(guò)executeScript或者insertCSS訪(fǎng)問(wèn)的網(wǎng)站
],
// 普通頁(yè)面能夠直接訪(fǎng)問(wèn)的插件資源列表,如果不設置是無(wú)法直接訪(fǎng)問(wèn)的
"web_accessible_resources": ["js/inject.js"],
// 插件主頁(yè),這個(gè)很重要,不要浪費了這個(gè)免費廣告位
"homepage_url": "https://www.baidu.com",
// 覆蓋瀏覽器默認頁(yè)面
"chrome_url_overrides":
{
// 覆蓋瀏覽器默認的新標簽頁(yè)
"newtab": "newtab.html"
},
// Chrome40以前的插件配置頁(yè)寫(xiě)法
"options_page": "options.html",
// Chrome40以后的插件配置頁(yè)寫(xiě)法,如果2個(gè)都寫(xiě),新版Chrome只認后面這一個(gè)
"options_ui":
{
"page": "options.html",
// 添加一些默認的樣式,推薦使用
"chrome_style": true
},
// 向地址欄注冊一個(gè)關(guān)鍵字以提供搜索建議,只能設置一個(gè)關(guān)鍵字
"omnibox": { "keyword" : "go" },
// 默認語(yǔ)言
"default_locale": "zh_CN",
// devtools頁(yè)面入口,注意只能指向一個(gè)HTML文件,不能是JS文件
"devtools_page": "devtools.html"
}
所謂content-scripts,其實(shí)就是Chrome插件中向頁(yè)面注入腳本的一種方式(雖然名為script,其實(shí)還可以包括css的),借助content-scripts我們可以實(shí)現通過(guò)配置的形式輕松向指定頁(yè)面注入JS和CSS(如果須要動(dòng)態(tài)注入,可以參考下文),最常見(jiàn)的例如:廣告屏蔽、頁(yè)面CSS訂制,等等。
示例配置:
{
// 需要直接注入頁(yè)面的JS
"content_scripts":
[
{
//"matches": ["http://*/*", "https://*/*"],
// "<all_urls>" 表示匹配所有地址
"matches": ["<all_urls>"],
// 多個(gè)JS按順序注入
"js": ["js/jquery-1.8.3.js", "js/content-script.js"],
// JS的注入可以隨便一點(diǎn),但是CSS的注意就要千萬(wàn)小心了,因為一不小心就可能影響全局樣式
"css": ["css/custom.css"],
// 代碼注入的時(shí)間,可選值: "document_start", "document_end", or "document_idle",最后一個(gè)表示頁(yè)面空閑時(shí),默認document_idle
"run_at": "document_start"
}
],
}
特別注意,如果沒(méi)有主動(dòng)指定run_at為document_start(默認為document_idle),下面這些代碼是不會(huì )生效的
document.addEventListener('DOMContentLoaded', function()
{
console.log('我被執行了!');
});
content-scripts和原始頁(yè)面共享DOM,但是不共享JS,如要訪(fǎng)問(wèn)頁(yè)面JS(例如某個(gè)JS變量),只能通過(guò)`injected
js來(lái)實(shí)現。content-scripts不能訪(fǎng)問(wèn)絕大部分chrome.xxx.api`,除了下邊這4種:
由于content-script可以注入到頁(yè)面,所以我們即將開(kāi)發(fā)的插件的主要功能就在這里
后臺(姑且如此翻譯吧)爬蟲(chóng)軟件增加網(wǎng)頁(yè)訪(fǎng)問(wèn),是一個(gè)常駐的頁(yè)面,它的生命周期是插件中所有類(lèi)型頁(yè)面中最長(cháng)的,它隨著(zhù)瀏覽器的打開(kāi)而打開(kāi),隨著(zhù)瀏覽器的關(guān)掉而關(guān)掉,所以一般把須要仍然運行
的、啟動(dòng)就運行的、全局的代碼放到background上面。
background的權限十分高,幾乎可以調用所有的Chrome擴充API(除了devtools),而且它可以無(wú)限制跨域,也就是可以跨域訪(fǎng)問(wèn)任何網(wǎng)站而無(wú)需要
求對方設置CORS。
經(jīng)過(guò)測試,其實(shí)不止是background,所有的直接通過(guò)chrome-extension://id/xx.html這些方法打開(kāi)的網(wǎng)頁(yè)都可以無(wú)限制跨域。
配置中,background可以通過(guò)page指定一張網(wǎng)頁(yè),也可以通過(guò)scripts直接指定一個(gè)JS,Chrome會(huì )手動(dòng)為這個(gè)JS生成一個(gè)默認的網(wǎng)頁(yè):
{
// 會(huì )一直常駐的后臺JS或后臺頁(yè)面
"background":
{
// 2種指定方式,如果指定JS,那么會(huì )自動(dòng)生成一個(gè)背景頁(yè)
"page": "background.html"
//"scripts": ["js/background.js"]
},
}
這里順帶介紹一下event-pages,它是一個(gè)哪些東西呢?鑒于background生命周期很長(cháng),長(cháng)時(shí)間掛載后臺可能會(huì )影響性能,所以Google又弄一個(gè)event-pages,在配置文件上,它與background的惟一區別就是多了一個(gè)persistent參數:
{
"background":
{
"scripts": ["event-page.js"],
"persistent": false
},
}
它的生命周期是:在被須要時(shí)加載,在空閑時(shí)被關(guān)閉,什么叫被須要時(shí)呢?比如第一次安裝、插件更新、有content-script向它發(fā)送消息,等等。
我們要開(kāi)發(fā)的插件目前用到了background和content_scripts這兩個(gè)選項,如果之后添加新功能時(shí)再瞧瞧其他的選項爬蟲(chóng)軟件增加網(wǎng)頁(yè)訪(fǎng)問(wèn),對chrome插件開(kāi)發(fā)感興趣的朋友可以瞧瞧這本書(shū)
phpQuery采集微信公眾號文章亂碼
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 445 次瀏覽 ? 2020-05-13 08:21
原來(lái)是因為陌陌在源碼中加入了防采集代碼<!--headTrap<body></body><head></head><html></html>-->,把文章源碼中的這一段除去就可以了!
具體代碼如下:
public function getCon(){
header('Content-type: text/html; charset=utf-8');
import('Vendor.QL.QueryList');
$w_url=$_POST['wurl']; //接收到的文章地址
// 測試文章地址
// $w_url='http://mp.weixin.qq.com/s?__biz=MzA5NzQ5OTMxMA==&mid=2650621512&idx=1&sn=2059946e820805c0d62a450aa3af62be&chksm=88960789bfe18e9f47417eb45cd8efe458af9e93fea3e8e4e242ea2376fd3e4c69f5218293cb&scene=0#wechat_redirect';
// echo "<script>alert('".$w_url."');</script>";
$html = file_get_contents($w_url); //獲取文章源碼并保存到參數中
// echo "<script>alert('".$html."');</script>";
$html = str_replace("<!--headTrap<body></body><head></head><html></html>-->", "", $html); //去除微信中的抓取干擾代碼
// die($w_url);<br /><br />// var_dump($html);
$data = \QueryList::Query($html,array(
//采集規則庫
//'規則名' => array('jQuery選擇器','要采集的屬性'),
'titleTag' => array('title','text'),
// 'title' => array('#activity-name','text'),
'content' => array('body','text'),
// 'image' => array('img','src'),
//微信規則
'contentWx' => array('#js_content','text'),
// 'imageWx' => array('img','data-src'),
// 'conText' => array('.rich_media_content>p','text'),
))->data;
foreach ($data as $k => $v) {
$data[$k]['imageWx'] = $this->cut_str($v['imageWx'],'?',0);
}
//打印結果
// print_r($data);
$this->assign('conD',$data);
$this->display();<br /><br /> }
Chrome瀏覽器保存微信公眾號文章中的圖片
用chrome瀏覽器打開(kāi)微信公眾號文章中時(shí),另存為圖片時(shí)保存的是640.webp,不是圖片本身,用IE則沒(méi)有此問(wèn)題.大部分chrome插件也難以保存圖片. 經(jīng)過(guò)多番嘗試,找到一款插件可以批量保存陌陌公 ...
pc端引入微信公眾號文章
最近做了一個(gè)小需求,結果坑非常多..... 需求是這樣的,要給公司內部做一個(gè)微信公眾號廣告投票系統,整個(gè)項目就不多贅言了,有個(gè)小功能,要求是這樣的: 點(diǎn)擊某條記錄后的“投票”按鈕,在當前頁(yè)面彈出彈窗顯 ...
使用Python爬取微信公眾號文章并保存為PDF文件&lpar;解決圖片不顯示的問(wèn)題&rpar;
前言 第一次寫(xiě)博客,主要內容是爬取微信公眾號的文章,將文章以PDF格式保存在本地. 爬取微信公眾號文章(使用wechatsogou) 1.安裝 pip install wechatsogou --up ...
【技巧】如何使用客戶(hù)端發(fā)布BLOG&plus;如何快速發(fā)布微信公眾號文章
[技巧]如何使用客戶(hù)端發(fā)布BLOG+怎樣快速發(fā)布微信公眾號文章 1 BLOG文檔結構圖 2 前言部份 2.1 導讀和注意事項 各位技術(shù)愛(ài)好者,看完本文后,你可以把握如下的技能,也 ...
用Markdown寫(xiě)微信公眾號文章
目前微信公眾號的編輯器是不支持Markdown句型的,那如何辦呢? 有一款叫Markdown Here的插件可以解決這個(gè)問(wèn)題(支持Chrome.Firefox.Safari). 官方網(wǎng)站:http:/ ...
小技巧微信文章采集 php,把Markdown文本發(fā)布到微信公眾號文章
估計很多人都是這樣,平常工作在github,等到有成果要發(fā)布,又要寫(xiě)微信公眾號. github用Markdown,微信公眾號,至少截至今早,還是沿襲富文本的形式.不是說(shuō)富文本不好,但每次悉心撰寫(xiě)的內容 ...
破解陌陌防盜鏈&amp&semi;微信公眾號文章爬取方案
破解陌陌圖文防盜鏈: 圖片解除防盜鏈: ...
微信公眾號文章轉語(yǔ)音tts
微信公眾號上面的文章在走路或則駕車(chē)時(shí)侯不方便瀏覽,希望能降低一個(gè)文字轉語(yǔ)音功能,那么問(wèn)題來(lái)了,到底哪家文字轉語(yǔ)音技術(shù)強呢? 經(jīng)過(guò)驗證,目前發(fā)覺(jué)最好用的還是balabolka ,國內的哪些“錄音啦”,試 ...
你所不知道的 Kindle - 閱讀微信公眾號文章
Kindle 是一款十分優(yōu)秀的閱讀設備,它為我們提供了十分舒服的閱讀體驗,并且配合強悍的亞馬遜圖書(shū)資源,應該是目前最好的閱讀設備之一.Kindle 在已有的成就下還仍然在努力提高用戶(hù)體驗.為中國用戶(hù)開(kāi) ...
go語(yǔ)言的命令行庫
命令行應用一般太小,程序猿們也不喜歡為它編撰注釋.所以一些額外的工作,如解析參數有個(gè)合理的庫來(lái)幫忙做就好了. 這個(gè)項目因而而生.安裝:go g ...
2014多校第一場(chǎng)A題 &vert;&vert; HDU 4861 Couple doubi
題目鏈接 題意 : 有K個(gè)球,給你一個(gè)數P,可以求出K個(gè)值,(i=1,2,...,k) : 1^i+2^i+...+(p-1)^i (mod p).然后女朋友先取,再xp取,都希望贏(yíng),如果女朋友能贏(yíng)輸 ...
chromedriver禁用圖片,禁用js,切換UA
selenium 模擬chrome瀏覽器,此時(shí)就是一個(gè)真實(shí)的瀏覽器,一個(gè)瀏覽器該加載的該渲染的它都加載都渲染,所以爬取網(wǎng)頁(yè)的速率太慢.如果可以不加載圖片等操作,網(wǎng)頁(yè)加載速率都會(huì )快不少,代碼中列舉了了禁 ...
反射 學(xué)習筆記之Class類(lèi)的使用
1 java世界中萬(wàn)事萬(wàn)物皆對象,除了2個(gè)特殊情況 int float等這種基本數據類(lèi)型,(但是也都有Integer和Float等封裝類(lèi)做了填補) java staic定義的,它不是屬于對象的,而是 ...
oracle INS-13001 環(huán)境不滿(mǎn)足最低要求
使用windows10等系統安裝oracle 11g等版本的數據庫時(shí),經(jīng)常會(huì )發(fā)覺(jué)開(kāi)始安裝時(shí)彈出[INS-13001 環(huán)境不滿(mǎn)足最低要求]的提示,此時(shí)可以點(diǎn)擊[是]繼續安裝. 也可以點(diǎn)擊[否]結束安裝, ...
【C&sol;C&plus;&plus;】查找(一):靜態(tài)查找表
{靜態(tài)查找表 + 動(dòng)態(tài)查找表} 所謂動(dòng)態(tài),就是,找的時(shí)侯沒(méi)有則添加,或者能刪掉 關(guān)鍵字:primary key:用來(lái)表示查找表中的一條記錄 {主關(guān)鍵字 + 次關(guān)鍵字} 主關(guān)鍵字是惟一的,用來(lái)惟一的標示 ...
水仙花在python3在pycharm的實(shí)現
---恢復內容開(kāi)始--- #方法一:#-*- coding: utf-8-*-while True: num = input("請輸入一個(gè)三位數") num = int(num) ...
POJ 1089
#include <iostream> #include <algorithm> #define MAXN 50005 using namespace std; struct ...
170629、springboot編程之Druid數據源和監控配置二
上篇是一種配置方法,雖然我們創(chuàng )建了servlet.filter并且沒(méi)有任務(wù)編碼,看著(zhù)是不是太不爽.ok,接下來(lái)說(shuō)一下簡(jiǎn)介的配置方法,使用代碼注冊Servlet,也是我個(gè)人比較推薦的! 1.創(chuàng )建Drui ...
百度地圖API 顯示區域邊界及地名定位
百度地圖API 顯示區域邊界及地名定位 這個(gè)定位一共用了兩個(gè)方式組成 一個(gè)是定位勾畫(huà)區域邊界線(xiàn),另一個(gè)是地名定位 原理: 當用戶(hù)輸入市.市.縣.區這些大地名時(shí),我們要定位用戶(hù)輸入的這個(gè)位置,并顯示輪廓 ... 查看全部
終于找到解決方案了微信文章采集 php,這是一個(gè)值得慶賀的事情....
原來(lái)是因為陌陌在源碼中加入了防采集代碼<!--headTrap<body></body><head></head><html></html>-->,把文章源碼中的這一段除去就可以了!
具體代碼如下:
public function getCon(){
header('Content-type: text/html; charset=utf-8');
import('Vendor.QL.QueryList');
$w_url=$_POST['wurl']; //接收到的文章地址
// 測試文章地址
// $w_url='http://mp.weixin.qq.com/s?__biz=MzA5NzQ5OTMxMA==&mid=2650621512&idx=1&sn=2059946e820805c0d62a450aa3af62be&chksm=88960789bfe18e9f47417eb45cd8efe458af9e93fea3e8e4e242ea2376fd3e4c69f5218293cb&scene=0#wechat_redirect';
// echo "<script>alert('".$w_url."');</script>";
$html = file_get_contents($w_url); //獲取文章源碼并保存到參數中
// echo "<script>alert('".$html."');</script>";
$html = str_replace("<!--headTrap<body></body><head></head><html></html>-->", "", $html); //去除微信中的抓取干擾代碼
// die($w_url);<br /><br />// var_dump($html);
$data = \QueryList::Query($html,array(
//采集規則庫
//'規則名' => array('jQuery選擇器','要采集的屬性'),
'titleTag' => array('title','text'),
// 'title' => array('#activity-name','text'),
'content' => array('body','text'),
// 'image' => array('img','src'),
//微信規則
'contentWx' => array('#js_content','text'),
// 'imageWx' => array('img','data-src'),
// 'conText' => array('.rich_media_content>p','text'),
))->data;
foreach ($data as $k => $v) {
$data[$k]['imageWx'] = $this->cut_str($v['imageWx'],'?',0);
}
//打印結果
// print_r($data);
$this->assign('conD',$data);
$this->display();<br /><br /> }
Chrome瀏覽器保存微信公眾號文章中的圖片
用chrome瀏覽器打開(kāi)微信公眾號文章中時(shí),另存為圖片時(shí)保存的是640.webp,不是圖片本身,用IE則沒(méi)有此問(wèn)題.大部分chrome插件也難以保存圖片. 經(jīng)過(guò)多番嘗試,找到一款插件可以批量保存陌陌公 ...
pc端引入微信公眾號文章
最近做了一個(gè)小需求,結果坑非常多..... 需求是這樣的,要給公司內部做一個(gè)微信公眾號廣告投票系統,整個(gè)項目就不多贅言了,有個(gè)小功能,要求是這樣的: 點(diǎn)擊某條記錄后的“投票”按鈕,在當前頁(yè)面彈出彈窗顯 ...
使用Python爬取微信公眾號文章并保存為PDF文件&lpar;解決圖片不顯示的問(wèn)題&rpar;
前言 第一次寫(xiě)博客,主要內容是爬取微信公眾號的文章,將文章以PDF格式保存在本地. 爬取微信公眾號文章(使用wechatsogou) 1.安裝 pip install wechatsogou --up ...
【技巧】如何使用客戶(hù)端發(fā)布BLOG&plus;如何快速發(fā)布微信公眾號文章
[技巧]如何使用客戶(hù)端發(fā)布BLOG+怎樣快速發(fā)布微信公眾號文章 1 BLOG文檔結構圖 2 前言部份 2.1 導讀和注意事項 各位技術(shù)愛(ài)好者,看完本文后,你可以把握如下的技能,也 ...
用Markdown寫(xiě)微信公眾號文章
目前微信公眾號的編輯器是不支持Markdown句型的,那如何辦呢? 有一款叫Markdown Here的插件可以解決這個(gè)問(wèn)題(支持Chrome.Firefox.Safari). 官方網(wǎng)站:http:/ ...
小技巧微信文章采集 php,把Markdown文本發(fā)布到微信公眾號文章
估計很多人都是這樣,平常工作在github,等到有成果要發(fā)布,又要寫(xiě)微信公眾號. github用Markdown,微信公眾號,至少截至今早,還是沿襲富文本的形式.不是說(shuō)富文本不好,但每次悉心撰寫(xiě)的內容 ...
破解陌陌防盜鏈&amp&semi;微信公眾號文章爬取方案
破解陌陌圖文防盜鏈: 圖片解除防盜鏈: ...
微信公眾號文章轉語(yǔ)音tts
微信公眾號上面的文章在走路或則駕車(chē)時(shí)侯不方便瀏覽,希望能降低一個(gè)文字轉語(yǔ)音功能,那么問(wèn)題來(lái)了,到底哪家文字轉語(yǔ)音技術(shù)強呢? 經(jīng)過(guò)驗證,目前發(fā)覺(jué)最好用的還是balabolka ,國內的哪些“錄音啦”,試 ...
你所不知道的 Kindle - 閱讀微信公眾號文章
Kindle 是一款十分優(yōu)秀的閱讀設備,它為我們提供了十分舒服的閱讀體驗,并且配合強悍的亞馬遜圖書(shū)資源,應該是目前最好的閱讀設備之一.Kindle 在已有的成就下還仍然在努力提高用戶(hù)體驗.為中國用戶(hù)開(kāi) ...
go語(yǔ)言的命令行庫
命令行應用一般太小,程序猿們也不喜歡為它編撰注釋.所以一些額外的工作,如解析參數有個(gè)合理的庫來(lái)幫忙做就好了. 這個(gè)項目因而而生.安裝:go g ...
2014多校第一場(chǎng)A題 &vert;&vert; HDU 4861 Couple doubi
題目鏈接 題意 : 有K個(gè)球,給你一個(gè)數P,可以求出K個(gè)值,(i=1,2,...,k) : 1^i+2^i+...+(p-1)^i (mod p).然后女朋友先取,再xp取,都希望贏(yíng),如果女朋友能贏(yíng)輸 ...
chromedriver禁用圖片,禁用js,切換UA
selenium 模擬chrome瀏覽器,此時(shí)就是一個(gè)真實(shí)的瀏覽器,一個(gè)瀏覽器該加載的該渲染的它都加載都渲染,所以爬取網(wǎng)頁(yè)的速率太慢.如果可以不加載圖片等操作,網(wǎng)頁(yè)加載速率都會(huì )快不少,代碼中列舉了了禁 ...
反射 學(xué)習筆記之Class類(lèi)的使用
1 java世界中萬(wàn)事萬(wàn)物皆對象,除了2個(gè)特殊情況 int float等這種基本數據類(lèi)型,(但是也都有Integer和Float等封裝類(lèi)做了填補) java staic定義的,它不是屬于對象的,而是 ...
oracle INS-13001 環(huán)境不滿(mǎn)足最低要求
使用windows10等系統安裝oracle 11g等版本的數據庫時(shí),經(jīng)常會(huì )發(fā)覺(jué)開(kāi)始安裝時(shí)彈出[INS-13001 環(huán)境不滿(mǎn)足最低要求]的提示,此時(shí)可以點(diǎn)擊[是]繼續安裝. 也可以點(diǎn)擊[否]結束安裝, ...
【C&sol;C&plus;&plus;】查找(一):靜態(tài)查找表
{靜態(tài)查找表 + 動(dòng)態(tài)查找表} 所謂動(dòng)態(tài),就是,找的時(shí)侯沒(méi)有則添加,或者能刪掉 關(guān)鍵字:primary key:用來(lái)表示查找表中的一條記錄 {主關(guān)鍵字 + 次關(guān)鍵字} 主關(guān)鍵字是惟一的,用來(lái)惟一的標示 ...
水仙花在python3在pycharm的實(shí)現
---恢復內容開(kāi)始--- #方法一:#-*- coding: utf-8-*-while True: num = input("請輸入一個(gè)三位數") num = int(num) ...
POJ 1089
#include <iostream> #include <algorithm> #define MAXN 50005 using namespace std; struct ...
170629、springboot編程之Druid數據源和監控配置二
上篇是一種配置方法,雖然我們創(chuàng )建了servlet.filter并且沒(méi)有任務(wù)編碼,看著(zhù)是不是太不爽.ok,接下來(lái)說(shuō)一下簡(jiǎn)介的配置方法,使用代碼注冊Servlet,也是我個(gè)人比較推薦的! 1.創(chuàng )建Drui ...
百度地圖API 顯示區域邊界及地名定位
百度地圖API 顯示區域邊界及地名定位 這個(gè)定位一共用了兩個(gè)方式組成 一個(gè)是定位勾畫(huà)區域邊界線(xiàn),另一個(gè)是地名定位 原理: 當用戶(hù)輸入市.市.縣.區這些大地名時(shí),我們要定位用戶(hù)輸入的這個(gè)位置,并顯示輪廓 ...
10個(gè)爬蟲(chóng)工程師必備的工具了解一哈
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 334 次瀏覽 ? 2020-05-02 08:05
工欲善其事必先利其器的道理相信你們都懂。而作為常常要和各大網(wǎng)站做拉鋸戰的爬蟲(chóng)工程師們,則更需要借助借助好身邊的一切法器,以便更快的擊潰對方防線(xiàn)。今天我就以日常爬蟲(chóng)流程,給你們介紹十款工具,相信你們把握以后,必定才能在工作效率上,提升一個(gè)量級
1.Chrome
Chrome屬于爬蟲(chóng)的基礎工具,一般我們用它做初始的爬取剖析,頁(yè)面邏輯跳轉、簡(jiǎn)單的js調試、網(wǎng)絡(luò )懇求的步驟等。我們早期的大部分工作都在它里面完成,打個(gè)不恰當的比喻,不用Chrome,我們就要從智能時(shí)代倒退到馬車(chē)時(shí)代
同類(lèi)工具: Firefox、Safari、Opera
2.Charles
Charles與Chrome對應,只不過(guò)它是拿來(lái)做App端的網(wǎng)路剖析,相較于網(wǎng)頁(yè)端,App端的網(wǎng)路剖析較為簡(jiǎn)單爬蟲(chóng)軟件,重點(diǎn)放到剖析各個(gè)網(wǎng)路懇求的參數。當然,如果對方在服務(wù)端做了參數加密,那就涉及逆向工程方面的知識,那一塊又是一大筐子的工具,這里姑且不談
同類(lèi)工具:Fiddler、Wireshark、Anyproxy
3.cUrl
維基百科這樣介紹它
cURL是一個(gè)借助URL句型在命令行下工作的文件傳輸工具,1997年首次發(fā)行。它支持文件上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱(chēng)cURL為下載工具。cURL還包含了用于程序開(kāi)發(fā)的libcurl。
在做爬蟲(chóng)剖析時(shí),我們常常要模擬一下其中的懇求,這個(gè)時(shí)侯假如去寫(xiě)一段代碼,未免很小題大做了,直接通過(guò)Chrome拷貝一個(gè)cURL,在命令行中跑一下瞧瞧結果即可,步驟如下
4.Postman
當然,大部分網(wǎng)站不是你拷貝一下cURL鏈接,改改其中參數就可以領(lǐng)到數據的,接下來(lái)我們做更深層次的剖析,就須要用到Postman“大殺器”了。為什么是“大殺器”呢?因為它著(zhù)實(shí)強悍。配合cURL,我們可以將懇求的內容直接移植過(guò)來(lái),然后對其中的懇求進(jìn)行整修,勾選即可選擇我們想要的內容參數,非常甜美
5.Online JavaScript Beautifier
用了以上的工具,你基本可以解決大部分網(wǎng)站了,算是一個(gè)合格的中級爬蟲(chóng)工程師了。這個(gè)時(shí)侯,我們想要進(jìn)階就須要面對更復雜的網(wǎng)站爬蟲(chóng)了,這個(gè)階段,你除了要會(huì )前端的知識,還須要了解一些后端的知識,因為好多網(wǎng)站的反爬舉措是置于后端的。你須要提取對方站點(diǎn)的js信息,并須要理解和逆向回家,原生的js代碼通常不適于閱讀,這時(shí),就要它來(lái)幫你低格吧
6.EditThisCookie
爬蟲(chóng)和反爬蟲(chóng)就是一場(chǎng)沒(méi)有烽煙的拉鋸戰,你永遠不知道對方會(huì )給你埋什么坑,比如對Cookies動(dòng)四肢。這個(gè)時(shí)侯你就須要它來(lái)輔助你剖析,通過(guò)Chrome安裝EditThisCookie插件后,我們可以通過(guò)點(diǎn)擊右上角小圖標,再對Cookies里的信息進(jìn)行增刪改查操作,大大提升對Cookies信息的模擬
7.Sketch
當我們早已確定能爬取以后,我們不應當著(zhù)急動(dòng)手寫(xiě)爬蟲(chóng)。而是應當著(zhù)手設計爬蟲(chóng)的結構。按照業(yè)務(wù)的需求,我們可以做一下簡(jiǎn)單的爬取剖析爬蟲(chóng)軟件,這有助于我們以后開(kāi)發(fā)的效率,所謂磨刀不誤砍柴工就是這個(gè)道理。比如可以考慮下,是搜索爬取還是遍歷爬???采用BFS還是DFS?并發(fā)的懇求數大約多少?考慮一下這種問(wèn)題后,我們可以通過(guò)Sketch來(lái)畫(huà)一下簡(jiǎn)單的構架圖
同類(lèi)工具:Illustrator、 Photoshop
終于要進(jìn)行開(kāi)發(fā)了,經(jīng)過(guò)前面的那些步驟,我們到這一步,已經(jīng)是萬(wàn)事俱備只欠東風(fēng)了。這個(gè)時(shí)侯,我們僅僅只須要做code和數據提取即可
8.XPath Helper
在提取網(wǎng)頁(yè)數據時(shí),我們通常須要使用xpath句型進(jìn)行頁(yè)面數據信息提取,一般地,但我們只能寫(xiě)完句型,發(fā)送懇求給對方網(wǎng)頁(yè),然后復印下來(lái),才曉得我們提取的數據是否正確,這樣一方面會(huì )發(fā)起好多不必要的懇求,另外一方面,也浪費了我們的時(shí)間。這個(gè)就可以用到XPath Helper了,通過(guò)Chrome安裝插件后,我們只須要點(diǎn)擊它在對應的xpath中寫(xiě)入句型,然后便可以太直觀(guān)地在左側看見(jiàn)我們的結果,效率up+10086
9.JSONView
我們有時(shí)候提取的數據是Json格式的,因為它簡(jiǎn)單易用,越來(lái)越多的網(wǎng)站傾向于用Json格式進(jìn)行數據傳輸。這個(gè)時(shí)侯,我們安裝這個(gè)插件后,就可以很方便的來(lái)查看Json數據啦
10.JSON Editor Online
JSONView是直接在網(wǎng)頁(yè)端返回的數據結果是Json,但多數時(shí)侯我們懇求的結果,都是后端渲染后的HTML網(wǎng)頁(yè)數據,我們發(fā)起懇求后得到的json數據,在終端(即terminal)中難以挺好的詮釋怎樣辦?借助JSON Editor Online就可以幫你挺好的低格數據啦,一秒低格,并且實(shí)現了貼心得折疊Json數據功能
既然見(jiàn)到這兒,相信大家一定是真愛(ài)粉啦,送大家一個(gè)彩蛋工具。
0.ScreenFloat
它能來(lái)干嘛?見(jiàn)名思意,就是一個(gè)屏幕漂浮工具,然而我近來(lái)才發(fā)覺(jué)它非常重要,尤其我們須要剖析參數時(shí),經(jīng)常須要在幾個(gè)界面來(lái)回切換,這個(gè)時(shí)侯有一些參數,我們須要比較她們的差別,這個(gè)時(shí)侯,你就可以通過(guò)它先漂浮著(zhù),不用在幾個(gè)界面中來(lái)切換。非常便捷。再送你一個(gè)隱藏玩法,比如前面這樣
有其他好用的工具,歡迎小伙伴留言哈!
-------------------End------------------- 查看全部
工欲善其事必先利其器的道理相信你們都懂。而作為常常要和各大網(wǎng)站做拉鋸戰的爬蟲(chóng)工程師們,則更需要借助借助好身邊的一切法器,以便更快的擊潰對方防線(xiàn)。今天我就以日常爬蟲(chóng)流程,給你們介紹十款工具,相信你們把握以后,必定才能在工作效率上,提升一個(gè)量級
1.Chrome
Chrome屬于爬蟲(chóng)的基礎工具,一般我們用它做初始的爬取剖析,頁(yè)面邏輯跳轉、簡(jiǎn)單的js調試、網(wǎng)絡(luò )懇求的步驟等。我們早期的大部分工作都在它里面完成,打個(gè)不恰當的比喻,不用Chrome,我們就要從智能時(shí)代倒退到馬車(chē)時(shí)代
同類(lèi)工具: Firefox、Safari、Opera
2.Charles
Charles與Chrome對應,只不過(guò)它是拿來(lái)做App端的網(wǎng)路剖析,相較于網(wǎng)頁(yè)端,App端的網(wǎng)路剖析較為簡(jiǎn)單爬蟲(chóng)軟件,重點(diǎn)放到剖析各個(gè)網(wǎng)路懇求的參數。當然,如果對方在服務(wù)端做了參數加密,那就涉及逆向工程方面的知識,那一塊又是一大筐子的工具,這里姑且不談
同類(lèi)工具:Fiddler、Wireshark、Anyproxy
3.cUrl
維基百科這樣介紹它
cURL是一個(gè)借助URL句型在命令行下工作的文件傳輸工具,1997年首次發(fā)行。它支持文件上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱(chēng)cURL為下載工具。cURL還包含了用于程序開(kāi)發(fā)的libcurl。
在做爬蟲(chóng)剖析時(shí),我們常常要模擬一下其中的懇求,這個(gè)時(shí)侯假如去寫(xiě)一段代碼,未免很小題大做了,直接通過(guò)Chrome拷貝一個(gè)cURL,在命令行中跑一下瞧瞧結果即可,步驟如下
4.Postman
當然,大部分網(wǎng)站不是你拷貝一下cURL鏈接,改改其中參數就可以領(lǐng)到數據的,接下來(lái)我們做更深層次的剖析,就須要用到Postman“大殺器”了。為什么是“大殺器”呢?因為它著(zhù)實(shí)強悍。配合cURL,我們可以將懇求的內容直接移植過(guò)來(lái),然后對其中的懇求進(jìn)行整修,勾選即可選擇我們想要的內容參數,非常甜美
5.Online JavaScript Beautifier
用了以上的工具,你基本可以解決大部分網(wǎng)站了,算是一個(gè)合格的中級爬蟲(chóng)工程師了。這個(gè)時(shí)侯,我們想要進(jìn)階就須要面對更復雜的網(wǎng)站爬蟲(chóng)了,這個(gè)階段,你除了要會(huì )前端的知識,還須要了解一些后端的知識,因為好多網(wǎng)站的反爬舉措是置于后端的。你須要提取對方站點(diǎn)的js信息,并須要理解和逆向回家,原生的js代碼通常不適于閱讀,這時(shí),就要它來(lái)幫你低格吧
6.EditThisCookie
爬蟲(chóng)和反爬蟲(chóng)就是一場(chǎng)沒(méi)有烽煙的拉鋸戰,你永遠不知道對方會(huì )給你埋什么坑,比如對Cookies動(dòng)四肢。這個(gè)時(shí)侯你就須要它來(lái)輔助你剖析,通過(guò)Chrome安裝EditThisCookie插件后,我們可以通過(guò)點(diǎn)擊右上角小圖標,再對Cookies里的信息進(jìn)行增刪改查操作,大大提升對Cookies信息的模擬
7.Sketch
當我們早已確定能爬取以后,我們不應當著(zhù)急動(dòng)手寫(xiě)爬蟲(chóng)。而是應當著(zhù)手設計爬蟲(chóng)的結構。按照業(yè)務(wù)的需求,我們可以做一下簡(jiǎn)單的爬取剖析爬蟲(chóng)軟件,這有助于我們以后開(kāi)發(fā)的效率,所謂磨刀不誤砍柴工就是這個(gè)道理。比如可以考慮下,是搜索爬取還是遍歷爬???采用BFS還是DFS?并發(fā)的懇求數大約多少?考慮一下這種問(wèn)題后,我們可以通過(guò)Sketch來(lái)畫(huà)一下簡(jiǎn)單的構架圖
同類(lèi)工具:Illustrator、 Photoshop
終于要進(jìn)行開(kāi)發(fā)了,經(jīng)過(guò)前面的那些步驟,我們到這一步,已經(jīng)是萬(wàn)事俱備只欠東風(fēng)了。這個(gè)時(shí)侯,我們僅僅只須要做code和數據提取即可
8.XPath Helper
在提取網(wǎng)頁(yè)數據時(shí),我們通常須要使用xpath句型進(jìn)行頁(yè)面數據信息提取,一般地,但我們只能寫(xiě)完句型,發(fā)送懇求給對方網(wǎng)頁(yè),然后復印下來(lái),才曉得我們提取的數據是否正確,這樣一方面會(huì )發(fā)起好多不必要的懇求,另外一方面,也浪費了我們的時(shí)間。這個(gè)就可以用到XPath Helper了,通過(guò)Chrome安裝插件后,我們只須要點(diǎn)擊它在對應的xpath中寫(xiě)入句型,然后便可以太直觀(guān)地在左側看見(jiàn)我們的結果,效率up+10086
9.JSONView
我們有時(shí)候提取的數據是Json格式的,因為它簡(jiǎn)單易用,越來(lái)越多的網(wǎng)站傾向于用Json格式進(jìn)行數據傳輸。這個(gè)時(shí)侯,我們安裝這個(gè)插件后,就可以很方便的來(lái)查看Json數據啦
10.JSON Editor Online
JSONView是直接在網(wǎng)頁(yè)端返回的數據結果是Json,但多數時(shí)侯我們懇求的結果,都是后端渲染后的HTML網(wǎng)頁(yè)數據,我們發(fā)起懇求后得到的json數據,在終端(即terminal)中難以挺好的詮釋怎樣辦?借助JSON Editor Online就可以幫你挺好的低格數據啦,一秒低格,并且實(shí)現了貼心得折疊Json數據功能
既然見(jiàn)到這兒,相信大家一定是真愛(ài)粉啦,送大家一個(gè)彩蛋工具。
0.ScreenFloat
它能來(lái)干嘛?見(jiàn)名思意,就是一個(gè)屏幕漂浮工具,然而我近來(lái)才發(fā)覺(jué)它非常重要,尤其我們須要剖析參數時(shí),經(jīng)常須要在幾個(gè)界面來(lái)回切換,這個(gè)時(shí)侯有一些參數,我們須要比較她們的差別,這個(gè)時(shí)侯,你就可以通過(guò)它先漂浮著(zhù),不用在幾個(gè)界面中來(lái)切換。非常便捷。再送你一個(gè)隱藏玩法,比如前面這樣
有其他好用的工具,歡迎小伙伴留言哈!
-------------------End-------------------
3款你必須曉得的爬蟲(chóng)工具
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 318 次瀏覽 ? 2020-05-31 08:01
微信公眾號:Python數據科學(xué)
知乎:
本篇博主將和你們分享幾個(gè)特別有用的爬蟲(chóng)小工具,這些小工具在實(shí)際的爬蟲(chóng)的開(kāi)發(fā)中會(huì )大大降低你的時(shí)間成本,并同時(shí)提升你的工作效率,真的是十分實(shí)用的工具。
這些工具當然是Google上的插件,一些擴充程序,并且經(jīng)博主親測,無(wú)任何問(wèn)題。最后的最后,博主將提供小工具的獲取方法。
好了,話(huà)不多說(shuō),我們來(lái)介紹一下。
我們上面提及過(guò),當客戶(hù)端向服務(wù)器端提出<ajax>異步懇求(比如 <xhr>)時(shí),會(huì )在響應里返回 <json> 格式的數據。
在開(kāi)發(fā)者工具中,我們會(huì )聽(tīng)到 <json> 格式數據的可視化療效太差,就是一段繁雜的字符串,難以直接看出關(guān)鍵信息。
那么為了直接有效的找到關(guān)鍵信息,<JSON-handle>工具會(huì )將紛繁的 <json> 格式數據弄成簡(jiǎn)單清晰的樹(shù)形圖,極大的提升可視化療效。
方法很簡(jiǎn)單,如果你已然安裝好了小工具,點(diǎn)開(kāi)圖標彈出框框,把<json>數據復制進(jìn)去即可。
當然,你也可以把從任意地方用來(lái)的<json>數據放進(jìn)去,不局限于瀏覽器異步響應。
就以<天貓網(wǎng)站>為例,隨便找出一個(gè)異步的懇求,response是下邊這樣的。
jsonp_46336857({"201509290":{"data":[{"_pos_":1,"entityType":"13","acm":"201509290.1003.1.1286473","title":"【搶券減400】Apple/蘋(píng)果iPhone X 全網(wǎng)通4G智能手機蘋(píng)果10 蘋(píng)果X","typ.......
把代碼放進(jìn)框框里,點(diǎn)擊OK,就弄成下邊這樣了數(據比較長(cháng),只截取一部分)。
上篇剖析爬蟲(chóng)中HTTP的秘密(基礎篇)我們介紹了懇求頭,而這個(gè)工具就是針對懇求頭中的User-Agent數組的。它的作用是可以隨便更換瀏覽器的User-Agent。
比如,你用Chrome瀏覽器瀏覽網(wǎng)頁(yè),瀏覽器默認身分是Chrome,但是你可以通過(guò)這個(gè)工具更換成其它任何身分。
這個(gè)最大的益處就是可以直接更換成手機身分瀏覽網(wǎng)頁(yè),而毋須用開(kāi)發(fā)者工具來(lái)回切換。
使用Chrome瀏覽器安裝插件爬蟲(chóng)工具,點(diǎn)開(kāi)圖標,選擇你須要的身分即可。
?。JChrome瀏覽器是這樣的)
?。ㄗ儞Q為IOS-iphone6)
針對Xpath解析方式,Xpath-Helper可提供當前網(wǎng)頁(yè)指定Xpath句子的查詢(xún)結果。
點(diǎn)開(kāi)圖標,出現白色框框。
1.假設目標為二維碼下的<百度>二字
2.開(kāi)發(fā)者工具找到源碼相應位置,右鍵copy xpath
3.復制到QUERY上面,結果手動(dòng)下來(lái)
注:Xpath-Helper小工具安裝后須要重啟Chrome方可使用爬蟲(chóng)工具,請你們注意一下這個(gè)坑。
下載Chrome瀏覽器下載小工具插件打開(kāi)Chrome更多工具—>擴展程序拖動(dòng)小工具插件程序<.crx>到擴充程序里安裝
安裝完成后,右上角會(huì )有三個(gè)小圖標: 查看全部
作者:xiaoyu
微信公眾號:Python數據科學(xué)
知乎:
本篇博主將和你們分享幾個(gè)特別有用的爬蟲(chóng)小工具,這些小工具在實(shí)際的爬蟲(chóng)的開(kāi)發(fā)中會(huì )大大降低你的時(shí)間成本,并同時(shí)提升你的工作效率,真的是十分實(shí)用的工具。
這些工具當然是Google上的插件,一些擴充程序,并且經(jīng)博主親測,無(wú)任何問(wèn)題。最后的最后,博主將提供小工具的獲取方法。
好了,話(huà)不多說(shuō),我們來(lái)介紹一下。
我們上面提及過(guò),當客戶(hù)端向服務(wù)器端提出<ajax>異步懇求(比如 <xhr>)時(shí),會(huì )在響應里返回 <json> 格式的數據。
在開(kāi)發(fā)者工具中,我們會(huì )聽(tīng)到 <json> 格式數據的可視化療效太差,就是一段繁雜的字符串,難以直接看出關(guān)鍵信息。
那么為了直接有效的找到關(guān)鍵信息,<JSON-handle>工具會(huì )將紛繁的 <json> 格式數據弄成簡(jiǎn)單清晰的樹(shù)形圖,極大的提升可視化療效。
方法很簡(jiǎn)單,如果你已然安裝好了小工具,點(diǎn)開(kāi)圖標彈出框框,把<json>數據復制進(jìn)去即可。
當然,你也可以把從任意地方用來(lái)的<json>數據放進(jìn)去,不局限于瀏覽器異步響應。
就以<天貓網(wǎng)站>為例,隨便找出一個(gè)異步的懇求,response是下邊這樣的。
jsonp_46336857({"201509290":{"data":[{"_pos_":1,"entityType":"13","acm":"201509290.1003.1.1286473","title":"【搶券減400】Apple/蘋(píng)果iPhone X 全網(wǎng)通4G智能手機蘋(píng)果10 蘋(píng)果X","typ.......
把代碼放進(jìn)框框里,點(diǎn)擊OK,就弄成下邊這樣了數(據比較長(cháng),只截取一部分)。
上篇剖析爬蟲(chóng)中HTTP的秘密(基礎篇)我們介紹了懇求頭,而這個(gè)工具就是針對懇求頭中的User-Agent數組的。它的作用是可以隨便更換瀏覽器的User-Agent。
比如,你用Chrome瀏覽器瀏覽網(wǎng)頁(yè),瀏覽器默認身分是Chrome,但是你可以通過(guò)這個(gè)工具更換成其它任何身分。
這個(gè)最大的益處就是可以直接更換成手機身分瀏覽網(wǎng)頁(yè),而毋須用開(kāi)發(fā)者工具來(lái)回切換。
使用Chrome瀏覽器安裝插件爬蟲(chóng)工具,點(diǎn)開(kāi)圖標,選擇你須要的身分即可。
?。JChrome瀏覽器是這樣的)
?。ㄗ儞Q為IOS-iphone6)
針對Xpath解析方式,Xpath-Helper可提供當前網(wǎng)頁(yè)指定Xpath句子的查詢(xún)結果。
點(diǎn)開(kāi)圖標,出現白色框框。
1.假設目標為二維碼下的<百度>二字
2.開(kāi)發(fā)者工具找到源碼相應位置,右鍵copy xpath
3.復制到QUERY上面,結果手動(dòng)下來(lái)
注:Xpath-Helper小工具安裝后須要重啟Chrome方可使用爬蟲(chóng)工具,請你們注意一下這個(gè)坑。
下載Chrome瀏覽器下載小工具插件打開(kāi)Chrome更多工具—>擴展程序拖動(dòng)小工具插件程序<.crx>到擴充程序里安裝
安裝完成后,右上角會(huì )有三個(gè)小圖標:
基于chrome插件的爬蟲(chóng)可視化點(diǎn)選配置工具
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 369 次瀏覽 ? 2020-05-29 08:01
Chrome插件沒(méi)有嚴格的項目結構要求,只要保證本目錄有一個(gè)manifest.json即可,也不需要專(zhuān)門(mén)的IDE,普通的web開(kāi)發(fā)工具即可。
從右上角菜單->更多工具->擴展程序可以步入 插件管理頁(yè)面,也可以直接在地址欄輸入chrome://extensions 訪(fǎng)問(wèn)。
網(wǎng)上介紹chrome插件開(kāi)發(fā)的文章已經(jīng)好多了,這里就不贅言了,只列一些項目中須要的
這是一個(gè)Chrome插件最重要也是必不可少的文件,用來(lái)配置所有和插件相關(guān)的配置,必須置于根目錄。其中,manifest_version、name、version3個(gè)是必不可少的,description和icons是推薦的。
下面給出的是一些常見(jiàn)的配置項,均有英文注釋
{
// 清單文件的版本,這個(gè)必須寫(xiě),而且必須是2
"manifest_version": 2,
// 插件的名稱(chēng)
"name": "demo",
// 插件的版本
"version": "1.0.0",
// 插件描述
"description": "簡(jiǎn)單的Chrome擴展demo",
// 圖標,一般偷懶全部用一個(gè)尺寸的也沒(méi)問(wèn)題
"icons":
{
"16": "img/icon.png",
"48": "img/icon.png",
"128": "img/icon.png"
},
// 會(huì )一直常駐的后臺JS或后臺頁(yè)面
"background":
{
// 2種指定方式,如果指定JS,那么會(huì )自動(dòng)生成一個(gè)背景頁(yè)
"page": "background.html"
//"scripts": ["js/background.js"]
},
// 瀏覽器右上角圖標設置,browser_action、page_action、app必須三選一
"browser_action":
{
"default_icon": "img/icon.png",
// 圖標懸停時(shí)的標題,可選
"default_title": "這是一個(gè)示例Chrome插件",
"default_popup": "popup.html"
},
// 當某些特定頁(yè)面打開(kāi)才顯示的圖標
/*"page_action":
{
"default_icon": "img/icon.png",
"default_title": "我是pageAction",
"default_popup": "popup.html"
},*/
// 需要直接注入頁(yè)面的JS
"content_scripts":
[
{
//"matches": ["http://*/*", "https://*/*"],
// "<all_urls>" 表示匹配所有地址
"matches": ["<all_urls>"],
// 多個(gè)JS按順序注入
"js": ["js/jquery-1.8.3.js", "js/content-script.js"],
// JS的注入可以隨便一點(diǎn),但是CSS的注意就要千萬(wàn)小心了,因為一不小心就可能影響全局樣式
"css": ["css/custom.css"],
// 代碼注入的時(shí)間,可選值: "document_start", "document_end", or "document_idle",最后一個(gè)表示頁(yè)面空閑時(shí),默認document_idle
"run_at": "document_start"
},
// 這里僅僅是為了演示content-script可以配置多個(gè)規則
{
"matches": ["*://*/*.png", "*://*/*.jpg", "*://*/*.gif", "*://*/*.bmp"],
"js": ["js/show-image-content-size.js"]
}
],
// 權限申請
"permissions":
[
"contextMenus", // 右鍵菜單
"tabs", // 標簽
"notifications", // 通知
"webRequest", // web請求
"webRequestBlocking",
"storage", // 插件本地存儲
"http://*/*", // 可以通過(guò)executeScript或者insertCSS訪(fǎng)問(wèn)的網(wǎng)站
"https://*/*" // 可以通過(guò)executeScript或者insertCSS訪(fǎng)問(wèn)的網(wǎng)站
],
// 普通頁(yè)面能夠直接訪(fǎng)問(wèn)的插件資源列表,如果不設置是無(wú)法直接訪(fǎng)問(wèn)的
"web_accessible_resources": ["js/inject.js"],
// 插件主頁(yè),這個(gè)很重要,不要浪費了這個(gè)免費廣告位
"homepage_url": "https://www.baidu.com",
// 覆蓋瀏覽器默認頁(yè)面
"chrome_url_overrides":
{
// 覆蓋瀏覽器默認的新標簽頁(yè)
"newtab": "newtab.html"
},
// Chrome40以前的插件配置頁(yè)寫(xiě)法
"options_page": "options.html",
// Chrome40以后的插件配置頁(yè)寫(xiě)法,如果2個(gè)都寫(xiě),新版Chrome只認后面這一個(gè)
"options_ui":
{
"page": "options.html",
// 添加一些默認的樣式,推薦使用
"chrome_style": true
},
// 向地址欄注冊一個(gè)關(guān)鍵字以提供搜索建議,只能設置一個(gè)關(guān)鍵字
"omnibox": { "keyword" : "go" },
// 默認語(yǔ)言
"default_locale": "zh_CN",
// devtools頁(yè)面入口,注意只能指向一個(gè)HTML文件,不能是JS文件
"devtools_page": "devtools.html"
}
所謂content-scripts,其實(shí)就是Chrome插件中向頁(yè)面注入腳本的一種方式(雖然名為script,其實(shí)還可以包括css的),借助content-scripts我們可以實(shí)現通過(guò)配置的形式輕松向指定頁(yè)面注入JS和CSS(如果須要動(dòng)態(tài)注入,可以參考下文),最常見(jiàn)的例如:廣告屏蔽、頁(yè)面CSS訂制,等等。
示例配置:
{
// 需要直接注入頁(yè)面的JS
"content_scripts":
[
{
//"matches": ["http://*/*", "https://*/*"],
// "<all_urls>" 表示匹配所有地址
"matches": ["<all_urls>"],
// 多個(gè)JS按順序注入
"js": ["js/jquery-1.8.3.js", "js/content-script.js"],
// JS的注入可以隨便一點(diǎn),但是CSS的注意就要千萬(wàn)小心了,因為一不小心就可能影響全局樣式
"css": ["css/custom.css"],
// 代碼注入的時(shí)間,可選值: "document_start", "document_end", or "document_idle",最后一個(gè)表示頁(yè)面空閑時(shí),默認document_idle
"run_at": "document_start"
}
],
}
特別注意,如果沒(méi)有主動(dòng)指定run_at為document_start(默認為document_idle),下面這些代碼是不會(huì )生效的
document.addEventListener('DOMContentLoaded', function()
{
console.log('我被執行了!');
});
content-scripts和原始頁(yè)面共享DOM,但是不共享JS,如要訪(fǎng)問(wèn)頁(yè)面JS(例如某個(gè)JS變量),只能通過(guò)`injected
js來(lái)實(shí)現。content-scripts不能訪(fǎng)問(wèn)絕大部分chrome.xxx.api`,除了下邊這4種:
由于content-script可以注入到頁(yè)面,所以我們即將開(kāi)發(fā)的插件的主要功能就在這里
后臺(姑且如此翻譯吧)爬蟲(chóng)軟件增加網(wǎng)頁(yè)訪(fǎng)問(wèn),是一個(gè)常駐的頁(yè)面,它的生命周期是插件中所有類(lèi)型頁(yè)面中最長(cháng)的,它隨著(zhù)瀏覽器的打開(kāi)而打開(kāi),隨著(zhù)瀏覽器的關(guān)掉而關(guān)掉,所以一般把須要仍然運行
的、啟動(dòng)就運行的、全局的代碼放到background上面。
background的權限十分高,幾乎可以調用所有的Chrome擴充API(除了devtools),而且它可以無(wú)限制跨域,也就是可以跨域訪(fǎng)問(wèn)任何網(wǎng)站而無(wú)需要
求對方設置CORS。
經(jīng)過(guò)測試,其實(shí)不止是background,所有的直接通過(guò)chrome-extension://id/xx.html這些方法打開(kāi)的網(wǎng)頁(yè)都可以無(wú)限制跨域。
配置中,background可以通過(guò)page指定一張網(wǎng)頁(yè),也可以通過(guò)scripts直接指定一個(gè)JS,Chrome會(huì )手動(dòng)為這個(gè)JS生成一個(gè)默認的網(wǎng)頁(yè):
{
// 會(huì )一直常駐的后臺JS或后臺頁(yè)面
"background":
{
// 2種指定方式,如果指定JS,那么會(huì )自動(dòng)生成一個(gè)背景頁(yè)
"page": "background.html"
//"scripts": ["js/background.js"]
},
}
這里順帶介紹一下event-pages,它是一個(gè)哪些東西呢?鑒于background生命周期很長(cháng),長(cháng)時(shí)間掛載后臺可能會(huì )影響性能,所以Google又弄一個(gè)event-pages,在配置文件上,它與background的惟一區別就是多了一個(gè)persistent參數:
{
"background":
{
"scripts": ["event-page.js"],
"persistent": false
},
}
它的生命周期是:在被須要時(shí)加載,在空閑時(shí)被關(guān)閉,什么叫被須要時(shí)呢?比如第一次安裝、插件更新、有content-script向它發(fā)送消息,等等。
我們要開(kāi)發(fā)的插件目前用到了background和content_scripts這兩個(gè)選項,如果之后添加新功能時(shí)再瞧瞧其他的選項爬蟲(chóng)軟件增加網(wǎng)頁(yè)訪(fǎng)問(wèn),對chrome插件開(kāi)發(fā)感興趣的朋友可以瞧瞧這本書(shū) 查看全部
Chrome插件是一個(gè)用Web技術(shù)開(kāi)發(fā)、用來(lái)提高瀏覽器功能的軟件,它雖然就是一個(gè)由HTML、CSS、JS、圖片等資源組成的一個(gè).crx后綴的壓縮包.
Chrome插件沒(méi)有嚴格的項目結構要求,只要保證本目錄有一個(gè)manifest.json即可,也不需要專(zhuān)門(mén)的IDE,普通的web開(kāi)發(fā)工具即可。
從右上角菜單->更多工具->擴展程序可以步入 插件管理頁(yè)面,也可以直接在地址欄輸入chrome://extensions 訪(fǎng)問(wèn)。
網(wǎng)上介紹chrome插件開(kāi)發(fā)的文章已經(jīng)好多了,這里就不贅言了,只列一些項目中須要的
這是一個(gè)Chrome插件最重要也是必不可少的文件,用來(lái)配置所有和插件相關(guān)的配置,必須置于根目錄。其中,manifest_version、name、version3個(gè)是必不可少的,description和icons是推薦的。
下面給出的是一些常見(jiàn)的配置項,均有英文注釋
{
// 清單文件的版本,這個(gè)必須寫(xiě),而且必須是2
"manifest_version": 2,
// 插件的名稱(chēng)
"name": "demo",
// 插件的版本
"version": "1.0.0",
// 插件描述
"description": "簡(jiǎn)單的Chrome擴展demo",
// 圖標,一般偷懶全部用一個(gè)尺寸的也沒(méi)問(wèn)題
"icons":
{
"16": "img/icon.png",
"48": "img/icon.png",
"128": "img/icon.png"
},
// 會(huì )一直常駐的后臺JS或后臺頁(yè)面
"background":
{
// 2種指定方式,如果指定JS,那么會(huì )自動(dòng)生成一個(gè)背景頁(yè)
"page": "background.html"
//"scripts": ["js/background.js"]
},
// 瀏覽器右上角圖標設置,browser_action、page_action、app必須三選一
"browser_action":
{
"default_icon": "img/icon.png",
// 圖標懸停時(shí)的標題,可選
"default_title": "這是一個(gè)示例Chrome插件",
"default_popup": "popup.html"
},
// 當某些特定頁(yè)面打開(kāi)才顯示的圖標
/*"page_action":
{
"default_icon": "img/icon.png",
"default_title": "我是pageAction",
"default_popup": "popup.html"
},*/
// 需要直接注入頁(yè)面的JS
"content_scripts":
[
{
//"matches": ["http://*/*", "https://*/*"],
// "<all_urls>" 表示匹配所有地址
"matches": ["<all_urls>"],
// 多個(gè)JS按順序注入
"js": ["js/jquery-1.8.3.js", "js/content-script.js"],
// JS的注入可以隨便一點(diǎn),但是CSS的注意就要千萬(wàn)小心了,因為一不小心就可能影響全局樣式
"css": ["css/custom.css"],
// 代碼注入的時(shí)間,可選值: "document_start", "document_end", or "document_idle",最后一個(gè)表示頁(yè)面空閑時(shí),默認document_idle
"run_at": "document_start"
},
// 這里僅僅是為了演示content-script可以配置多個(gè)規則
{
"matches": ["*://*/*.png", "*://*/*.jpg", "*://*/*.gif", "*://*/*.bmp"],
"js": ["js/show-image-content-size.js"]
}
],
// 權限申請
"permissions":
[
"contextMenus", // 右鍵菜單
"tabs", // 標簽
"notifications", // 通知
"webRequest", // web請求
"webRequestBlocking",
"storage", // 插件本地存儲
"http://*/*", // 可以通過(guò)executeScript或者insertCSS訪(fǎng)問(wèn)的網(wǎng)站
"https://*/*" // 可以通過(guò)executeScript或者insertCSS訪(fǎng)問(wèn)的網(wǎng)站
],
// 普通頁(yè)面能夠直接訪(fǎng)問(wèn)的插件資源列表,如果不設置是無(wú)法直接訪(fǎng)問(wèn)的
"web_accessible_resources": ["js/inject.js"],
// 插件主頁(yè),這個(gè)很重要,不要浪費了這個(gè)免費廣告位
"homepage_url": "https://www.baidu.com",
// 覆蓋瀏覽器默認頁(yè)面
"chrome_url_overrides":
{
// 覆蓋瀏覽器默認的新標簽頁(yè)
"newtab": "newtab.html"
},
// Chrome40以前的插件配置頁(yè)寫(xiě)法
"options_page": "options.html",
// Chrome40以后的插件配置頁(yè)寫(xiě)法,如果2個(gè)都寫(xiě),新版Chrome只認后面這一個(gè)
"options_ui":
{
"page": "options.html",
// 添加一些默認的樣式,推薦使用
"chrome_style": true
},
// 向地址欄注冊一個(gè)關(guān)鍵字以提供搜索建議,只能設置一個(gè)關(guān)鍵字
"omnibox": { "keyword" : "go" },
// 默認語(yǔ)言
"default_locale": "zh_CN",
// devtools頁(yè)面入口,注意只能指向一個(gè)HTML文件,不能是JS文件
"devtools_page": "devtools.html"
}
所謂content-scripts,其實(shí)就是Chrome插件中向頁(yè)面注入腳本的一種方式(雖然名為script,其實(shí)還可以包括css的),借助content-scripts我們可以實(shí)現通過(guò)配置的形式輕松向指定頁(yè)面注入JS和CSS(如果須要動(dòng)態(tài)注入,可以參考下文),最常見(jiàn)的例如:廣告屏蔽、頁(yè)面CSS訂制,等等。
示例配置:
{
// 需要直接注入頁(yè)面的JS
"content_scripts":
[
{
//"matches": ["http://*/*", "https://*/*"],
// "<all_urls>" 表示匹配所有地址
"matches": ["<all_urls>"],
// 多個(gè)JS按順序注入
"js": ["js/jquery-1.8.3.js", "js/content-script.js"],
// JS的注入可以隨便一點(diǎn),但是CSS的注意就要千萬(wàn)小心了,因為一不小心就可能影響全局樣式
"css": ["css/custom.css"],
// 代碼注入的時(shí)間,可選值: "document_start", "document_end", or "document_idle",最后一個(gè)表示頁(yè)面空閑時(shí),默認document_idle
"run_at": "document_start"
}
],
}
特別注意,如果沒(méi)有主動(dòng)指定run_at為document_start(默認為document_idle),下面這些代碼是不會(huì )生效的
document.addEventListener('DOMContentLoaded', function()
{
console.log('我被執行了!');
});
content-scripts和原始頁(yè)面共享DOM,但是不共享JS,如要訪(fǎng)問(wèn)頁(yè)面JS(例如某個(gè)JS變量),只能通過(guò)`injected
js來(lái)實(shí)現。content-scripts不能訪(fǎng)問(wèn)絕大部分chrome.xxx.api`,除了下邊這4種:
由于content-script可以注入到頁(yè)面,所以我們即將開(kāi)發(fā)的插件的主要功能就在這里
后臺(姑且如此翻譯吧)爬蟲(chóng)軟件增加網(wǎng)頁(yè)訪(fǎng)問(wèn),是一個(gè)常駐的頁(yè)面,它的生命周期是插件中所有類(lèi)型頁(yè)面中最長(cháng)的,它隨著(zhù)瀏覽器的打開(kāi)而打開(kāi),隨著(zhù)瀏覽器的關(guān)掉而關(guān)掉,所以一般把須要仍然運行
的、啟動(dòng)就運行的、全局的代碼放到background上面。
background的權限十分高,幾乎可以調用所有的Chrome擴充API(除了devtools),而且它可以無(wú)限制跨域,也就是可以跨域訪(fǎng)問(wèn)任何網(wǎng)站而無(wú)需要
求對方設置CORS。
經(jīng)過(guò)測試,其實(shí)不止是background,所有的直接通過(guò)chrome-extension://id/xx.html這些方法打開(kāi)的網(wǎng)頁(yè)都可以無(wú)限制跨域。
配置中,background可以通過(guò)page指定一張網(wǎng)頁(yè),也可以通過(guò)scripts直接指定一個(gè)JS,Chrome會(huì )手動(dòng)為這個(gè)JS生成一個(gè)默認的網(wǎng)頁(yè):
{
// 會(huì )一直常駐的后臺JS或后臺頁(yè)面
"background":
{
// 2種指定方式,如果指定JS,那么會(huì )自動(dòng)生成一個(gè)背景頁(yè)
"page": "background.html"
//"scripts": ["js/background.js"]
},
}
這里順帶介紹一下event-pages,它是一個(gè)哪些東西呢?鑒于background生命周期很長(cháng),長(cháng)時(shí)間掛載后臺可能會(huì )影響性能,所以Google又弄一個(gè)event-pages,在配置文件上,它與background的惟一區別就是多了一個(gè)persistent參數:
{
"background":
{
"scripts": ["event-page.js"],
"persistent": false
},
}
它的生命周期是:在被須要時(shí)加載,在空閑時(shí)被關(guān)閉,什么叫被須要時(shí)呢?比如第一次安裝、插件更新、有content-script向它發(fā)送消息,等等。
我們要開(kāi)發(fā)的插件目前用到了background和content_scripts這兩個(gè)選項,如果之后添加新功能時(shí)再瞧瞧其他的選項爬蟲(chóng)軟件增加網(wǎng)頁(yè)訪(fǎng)問(wèn),對chrome插件開(kāi)發(fā)感興趣的朋友可以瞧瞧這本書(shū)
phpQuery采集微信公眾號文章亂碼
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 445 次瀏覽 ? 2020-05-13 08:21
原來(lái)是因為陌陌在源碼中加入了防采集代碼<!--headTrap<body></body><head></head><html></html>-->,把文章源碼中的這一段除去就可以了!
具體代碼如下:
public function getCon(){
header('Content-type: text/html; charset=utf-8');
import('Vendor.QL.QueryList');
$w_url=$_POST['wurl']; //接收到的文章地址
// 測試文章地址
// $w_url='http://mp.weixin.qq.com/s?__biz=MzA5NzQ5OTMxMA==&mid=2650621512&idx=1&sn=2059946e820805c0d62a450aa3af62be&chksm=88960789bfe18e9f47417eb45cd8efe458af9e93fea3e8e4e242ea2376fd3e4c69f5218293cb&scene=0#wechat_redirect';
// echo "<script>alert('".$w_url."');</script>";
$html = file_get_contents($w_url); //獲取文章源碼并保存到參數中
// echo "<script>alert('".$html."');</script>";
$html = str_replace("<!--headTrap<body></body><head></head><html></html>-->", "", $html); //去除微信中的抓取干擾代碼
// die($w_url);<br /><br />// var_dump($html);
$data = \QueryList::Query($html,array(
//采集規則庫
//'規則名' => array('jQuery選擇器','要采集的屬性'),
'titleTag' => array('title','text'),
// 'title' => array('#activity-name','text'),
'content' => array('body','text'),
// 'image' => array('img','src'),
//微信規則
'contentWx' => array('#js_content','text'),
// 'imageWx' => array('img','data-src'),
// 'conText' => array('.rich_media_content>p','text'),
))->data;
foreach ($data as $k => $v) {
$data[$k]['imageWx'] = $this->cut_str($v['imageWx'],'?',0);
}
//打印結果
// print_r($data);
$this->assign('conD',$data);
$this->display();<br /><br /> }
Chrome瀏覽器保存微信公眾號文章中的圖片
用chrome瀏覽器打開(kāi)微信公眾號文章中時(shí),另存為圖片時(shí)保存的是640.webp,不是圖片本身,用IE則沒(méi)有此問(wèn)題.大部分chrome插件也難以保存圖片. 經(jīng)過(guò)多番嘗試,找到一款插件可以批量保存陌陌公 ...
pc端引入微信公眾號文章
最近做了一個(gè)小需求,結果坑非常多..... 需求是這樣的,要給公司內部做一個(gè)微信公眾號廣告投票系統,整個(gè)項目就不多贅言了,有個(gè)小功能,要求是這樣的: 點(diǎn)擊某條記錄后的“投票”按鈕,在當前頁(yè)面彈出彈窗顯 ...
使用Python爬取微信公眾號文章并保存為PDF文件&lpar;解決圖片不顯示的問(wèn)題&rpar;
前言 第一次寫(xiě)博客,主要內容是爬取微信公眾號的文章,將文章以PDF格式保存在本地. 爬取微信公眾號文章(使用wechatsogou) 1.安裝 pip install wechatsogou --up ...
【技巧】如何使用客戶(hù)端發(fā)布BLOG&plus;如何快速發(fā)布微信公眾號文章
[技巧]如何使用客戶(hù)端發(fā)布BLOG+怎樣快速發(fā)布微信公眾號文章 1 BLOG文檔結構圖 2 前言部份 2.1 導讀和注意事項 各位技術(shù)愛(ài)好者,看完本文后,你可以把握如下的技能,也 ...
用Markdown寫(xiě)微信公眾號文章
目前微信公眾號的編輯器是不支持Markdown句型的,那如何辦呢? 有一款叫Markdown Here的插件可以解決這個(gè)問(wèn)題(支持Chrome.Firefox.Safari). 官方網(wǎng)站:http:/ ...
小技巧微信文章采集 php,把Markdown文本發(fā)布到微信公眾號文章
估計很多人都是這樣,平常工作在github,等到有成果要發(fā)布,又要寫(xiě)微信公眾號. github用Markdown,微信公眾號,至少截至今早,還是沿襲富文本的形式.不是說(shuō)富文本不好,但每次悉心撰寫(xiě)的內容 ...
破解陌陌防盜鏈&amp&semi;微信公眾號文章爬取方案
破解陌陌圖文防盜鏈: 圖片解除防盜鏈: ...
微信公眾號文章轉語(yǔ)音tts
微信公眾號上面的文章在走路或則駕車(chē)時(shí)侯不方便瀏覽,希望能降低一個(gè)文字轉語(yǔ)音功能,那么問(wèn)題來(lái)了,到底哪家文字轉語(yǔ)音技術(shù)強呢? 經(jīng)過(guò)驗證,目前發(fā)覺(jué)最好用的還是balabolka ,國內的哪些“錄音啦”,試 ...
你所不知道的 Kindle - 閱讀微信公眾號文章
Kindle 是一款十分優(yōu)秀的閱讀設備,它為我們提供了十分舒服的閱讀體驗,并且配合強悍的亞馬遜圖書(shū)資源,應該是目前最好的閱讀設備之一.Kindle 在已有的成就下還仍然在努力提高用戶(hù)體驗.為中國用戶(hù)開(kāi) ...
go語(yǔ)言的命令行庫
命令行應用一般太小,程序猿們也不喜歡為它編撰注釋.所以一些額外的工作,如解析參數有個(gè)合理的庫來(lái)幫忙做就好了. 這個(gè)項目因而而生.安裝:go g ...
2014多校第一場(chǎng)A題 &vert;&vert; HDU 4861 Couple doubi
題目鏈接 題意 : 有K個(gè)球,給你一個(gè)數P,可以求出K個(gè)值,(i=1,2,...,k) : 1^i+2^i+...+(p-1)^i (mod p).然后女朋友先取,再xp取,都希望贏(yíng),如果女朋友能贏(yíng)輸 ...
chromedriver禁用圖片,禁用js,切換UA
selenium 模擬chrome瀏覽器,此時(shí)就是一個(gè)真實(shí)的瀏覽器,一個(gè)瀏覽器該加載的該渲染的它都加載都渲染,所以爬取網(wǎng)頁(yè)的速率太慢.如果可以不加載圖片等操作,網(wǎng)頁(yè)加載速率都會(huì )快不少,代碼中列舉了了禁 ...
反射 學(xué)習筆記之Class類(lèi)的使用
1 java世界中萬(wàn)事萬(wàn)物皆對象,除了2個(gè)特殊情況 int float等這種基本數據類(lèi)型,(但是也都有Integer和Float等封裝類(lèi)做了填補) java staic定義的,它不是屬于對象的,而是 ...
oracle INS-13001 環(huán)境不滿(mǎn)足最低要求
使用windows10等系統安裝oracle 11g等版本的數據庫時(shí),經(jīng)常會(huì )發(fā)覺(jué)開(kāi)始安裝時(shí)彈出[INS-13001 環(huán)境不滿(mǎn)足最低要求]的提示,此時(shí)可以點(diǎn)擊[是]繼續安裝. 也可以點(diǎn)擊[否]結束安裝, ...
【C&sol;C&plus;&plus;】查找(一):靜態(tài)查找表
{靜態(tài)查找表 + 動(dòng)態(tài)查找表} 所謂動(dòng)態(tài),就是,找的時(shí)侯沒(méi)有則添加,或者能刪掉 關(guān)鍵字:primary key:用來(lái)表示查找表中的一條記錄 {主關(guān)鍵字 + 次關(guān)鍵字} 主關(guān)鍵字是惟一的,用來(lái)惟一的標示 ...
水仙花在python3在pycharm的實(shí)現
---恢復內容開(kāi)始--- #方法一:#-*- coding: utf-8-*-while True: num = input("請輸入一個(gè)三位數") num = int(num) ...
POJ 1089
#include <iostream> #include <algorithm> #define MAXN 50005 using namespace std; struct ...
170629、springboot編程之Druid數據源和監控配置二
上篇是一種配置方法,雖然我們創(chuàng )建了servlet.filter并且沒(méi)有任務(wù)編碼,看著(zhù)是不是太不爽.ok,接下來(lái)說(shuō)一下簡(jiǎn)介的配置方法,使用代碼注冊Servlet,也是我個(gè)人比較推薦的! 1.創(chuàng )建Drui ...
百度地圖API 顯示區域邊界及地名定位
百度地圖API 顯示區域邊界及地名定位 這個(gè)定位一共用了兩個(gè)方式組成 一個(gè)是定位勾畫(huà)區域邊界線(xiàn),另一個(gè)是地名定位 原理: 當用戶(hù)輸入市.市.縣.區這些大地名時(shí),我們要定位用戶(hù)輸入的這個(gè)位置,并顯示輪廓 ... 查看全部
終于找到解決方案了微信文章采集 php,這是一個(gè)值得慶賀的事情....
原來(lái)是因為陌陌在源碼中加入了防采集代碼<!--headTrap<body></body><head></head><html></html>-->,把文章源碼中的這一段除去就可以了!
具體代碼如下:
public function getCon(){
header('Content-type: text/html; charset=utf-8');
import('Vendor.QL.QueryList');
$w_url=$_POST['wurl']; //接收到的文章地址
// 測試文章地址
// $w_url='http://mp.weixin.qq.com/s?__biz=MzA5NzQ5OTMxMA==&mid=2650621512&idx=1&sn=2059946e820805c0d62a450aa3af62be&chksm=88960789bfe18e9f47417eb45cd8efe458af9e93fea3e8e4e242ea2376fd3e4c69f5218293cb&scene=0#wechat_redirect';
// echo "<script>alert('".$w_url."');</script>";
$html = file_get_contents($w_url); //獲取文章源碼并保存到參數中
// echo "<script>alert('".$html."');</script>";
$html = str_replace("<!--headTrap<body></body><head></head><html></html>-->", "", $html); //去除微信中的抓取干擾代碼
// die($w_url);<br /><br />// var_dump($html);
$data = \QueryList::Query($html,array(
//采集規則庫
//'規則名' => array('jQuery選擇器','要采集的屬性'),
'titleTag' => array('title','text'),
// 'title' => array('#activity-name','text'),
'content' => array('body','text'),
// 'image' => array('img','src'),
//微信規則
'contentWx' => array('#js_content','text'),
// 'imageWx' => array('img','data-src'),
// 'conText' => array('.rich_media_content>p','text'),
))->data;
foreach ($data as $k => $v) {
$data[$k]['imageWx'] = $this->cut_str($v['imageWx'],'?',0);
}
//打印結果
// print_r($data);
$this->assign('conD',$data);
$this->display();<br /><br /> }
Chrome瀏覽器保存微信公眾號文章中的圖片
用chrome瀏覽器打開(kāi)微信公眾號文章中時(shí),另存為圖片時(shí)保存的是640.webp,不是圖片本身,用IE則沒(méi)有此問(wèn)題.大部分chrome插件也難以保存圖片. 經(jīng)過(guò)多番嘗試,找到一款插件可以批量保存陌陌公 ...
pc端引入微信公眾號文章
最近做了一個(gè)小需求,結果坑非常多..... 需求是這樣的,要給公司內部做一個(gè)微信公眾號廣告投票系統,整個(gè)項目就不多贅言了,有個(gè)小功能,要求是這樣的: 點(diǎn)擊某條記錄后的“投票”按鈕,在當前頁(yè)面彈出彈窗顯 ...
使用Python爬取微信公眾號文章并保存為PDF文件&lpar;解決圖片不顯示的問(wèn)題&rpar;
前言 第一次寫(xiě)博客,主要內容是爬取微信公眾號的文章,將文章以PDF格式保存在本地. 爬取微信公眾號文章(使用wechatsogou) 1.安裝 pip install wechatsogou --up ...
【技巧】如何使用客戶(hù)端發(fā)布BLOG&plus;如何快速發(fā)布微信公眾號文章
[技巧]如何使用客戶(hù)端發(fā)布BLOG+怎樣快速發(fā)布微信公眾號文章 1 BLOG文檔結構圖 2 前言部份 2.1 導讀和注意事項 各位技術(shù)愛(ài)好者,看完本文后,你可以把握如下的技能,也 ...
用Markdown寫(xiě)微信公眾號文章
目前微信公眾號的編輯器是不支持Markdown句型的,那如何辦呢? 有一款叫Markdown Here的插件可以解決這個(gè)問(wèn)題(支持Chrome.Firefox.Safari). 官方網(wǎng)站:http:/ ...
小技巧微信文章采集 php,把Markdown文本發(fā)布到微信公眾號文章
估計很多人都是這樣,平常工作在github,等到有成果要發(fā)布,又要寫(xiě)微信公眾號. github用Markdown,微信公眾號,至少截至今早,還是沿襲富文本的形式.不是說(shuō)富文本不好,但每次悉心撰寫(xiě)的內容 ...
破解陌陌防盜鏈&amp&semi;微信公眾號文章爬取方案
破解陌陌圖文防盜鏈: 圖片解除防盜鏈: ...
微信公眾號文章轉語(yǔ)音tts
微信公眾號上面的文章在走路或則駕車(chē)時(shí)侯不方便瀏覽,希望能降低一個(gè)文字轉語(yǔ)音功能,那么問(wèn)題來(lái)了,到底哪家文字轉語(yǔ)音技術(shù)強呢? 經(jīng)過(guò)驗證,目前發(fā)覺(jué)最好用的還是balabolka ,國內的哪些“錄音啦”,試 ...
你所不知道的 Kindle - 閱讀微信公眾號文章
Kindle 是一款十分優(yōu)秀的閱讀設備,它為我們提供了十分舒服的閱讀體驗,并且配合強悍的亞馬遜圖書(shū)資源,應該是目前最好的閱讀設備之一.Kindle 在已有的成就下還仍然在努力提高用戶(hù)體驗.為中國用戶(hù)開(kāi) ...
go語(yǔ)言的命令行庫
命令行應用一般太小,程序猿們也不喜歡為它編撰注釋.所以一些額外的工作,如解析參數有個(gè)合理的庫來(lái)幫忙做就好了. 這個(gè)項目因而而生.安裝:go g ...
2014多校第一場(chǎng)A題 &vert;&vert; HDU 4861 Couple doubi
題目鏈接 題意 : 有K個(gè)球,給你一個(gè)數P,可以求出K個(gè)值,(i=1,2,...,k) : 1^i+2^i+...+(p-1)^i (mod p).然后女朋友先取,再xp取,都希望贏(yíng),如果女朋友能贏(yíng)輸 ...
chromedriver禁用圖片,禁用js,切換UA
selenium 模擬chrome瀏覽器,此時(shí)就是一個(gè)真實(shí)的瀏覽器,一個(gè)瀏覽器該加載的該渲染的它都加載都渲染,所以爬取網(wǎng)頁(yè)的速率太慢.如果可以不加載圖片等操作,網(wǎng)頁(yè)加載速率都會(huì )快不少,代碼中列舉了了禁 ...
反射 學(xué)習筆記之Class類(lèi)的使用
1 java世界中萬(wàn)事萬(wàn)物皆對象,除了2個(gè)特殊情況 int float等這種基本數據類(lèi)型,(但是也都有Integer和Float等封裝類(lèi)做了填補) java staic定義的,它不是屬于對象的,而是 ...
oracle INS-13001 環(huán)境不滿(mǎn)足最低要求
使用windows10等系統安裝oracle 11g等版本的數據庫時(shí),經(jīng)常會(huì )發(fā)覺(jué)開(kāi)始安裝時(shí)彈出[INS-13001 環(huán)境不滿(mǎn)足最低要求]的提示,此時(shí)可以點(diǎn)擊[是]繼續安裝. 也可以點(diǎn)擊[否]結束安裝, ...
【C&sol;C&plus;&plus;】查找(一):靜態(tài)查找表
{靜態(tài)查找表 + 動(dòng)態(tài)查找表} 所謂動(dòng)態(tài),就是,找的時(shí)侯沒(méi)有則添加,或者能刪掉 關(guān)鍵字:primary key:用來(lái)表示查找表中的一條記錄 {主關(guān)鍵字 + 次關(guān)鍵字} 主關(guān)鍵字是惟一的,用來(lái)惟一的標示 ...
水仙花在python3在pycharm的實(shí)現
---恢復內容開(kāi)始--- #方法一:#-*- coding: utf-8-*-while True: num = input("請輸入一個(gè)三位數") num = int(num) ...
POJ 1089
#include <iostream> #include <algorithm> #define MAXN 50005 using namespace std; struct ...
170629、springboot編程之Druid數據源和監控配置二
上篇是一種配置方法,雖然我們創(chuàng )建了servlet.filter并且沒(méi)有任務(wù)編碼,看著(zhù)是不是太不爽.ok,接下來(lái)說(shuō)一下簡(jiǎn)介的配置方法,使用代碼注冊Servlet,也是我個(gè)人比較推薦的! 1.創(chuàng )建Drui ...
百度地圖API 顯示區域邊界及地名定位
百度地圖API 顯示區域邊界及地名定位 這個(gè)定位一共用了兩個(gè)方式組成 一個(gè)是定位勾畫(huà)區域邊界線(xiàn),另一個(gè)是地名定位 原理: 當用戶(hù)輸入市.市.縣.區這些大地名時(shí),我們要定位用戶(hù)輸入的這個(gè)位置,并顯示輪廓 ...
10個(gè)爬蟲(chóng)工程師必備的工具了解一哈
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 334 次瀏覽 ? 2020-05-02 08:05
工欲善其事必先利其器的道理相信你們都懂。而作為常常要和各大網(wǎng)站做拉鋸戰的爬蟲(chóng)工程師們,則更需要借助借助好身邊的一切法器,以便更快的擊潰對方防線(xiàn)。今天我就以日常爬蟲(chóng)流程,給你們介紹十款工具,相信你們把握以后,必定才能在工作效率上,提升一個(gè)量級
1.Chrome
Chrome屬于爬蟲(chóng)的基礎工具,一般我們用它做初始的爬取剖析,頁(yè)面邏輯跳轉、簡(jiǎn)單的js調試、網(wǎng)絡(luò )懇求的步驟等。我們早期的大部分工作都在它里面完成,打個(gè)不恰當的比喻,不用Chrome,我們就要從智能時(shí)代倒退到馬車(chē)時(shí)代
同類(lèi)工具: Firefox、Safari、Opera
2.Charles
Charles與Chrome對應,只不過(guò)它是拿來(lái)做App端的網(wǎng)路剖析,相較于網(wǎng)頁(yè)端,App端的網(wǎng)路剖析較為簡(jiǎn)單爬蟲(chóng)軟件,重點(diǎn)放到剖析各個(gè)網(wǎng)路懇求的參數。當然,如果對方在服務(wù)端做了參數加密,那就涉及逆向工程方面的知識,那一塊又是一大筐子的工具,這里姑且不談
同類(lèi)工具:Fiddler、Wireshark、Anyproxy
3.cUrl
維基百科這樣介紹它
cURL是一個(gè)借助URL句型在命令行下工作的文件傳輸工具,1997年首次發(fā)行。它支持文件上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱(chēng)cURL為下載工具。cURL還包含了用于程序開(kāi)發(fā)的libcurl。
在做爬蟲(chóng)剖析時(shí),我們常常要模擬一下其中的懇求,這個(gè)時(shí)侯假如去寫(xiě)一段代碼,未免很小題大做了,直接通過(guò)Chrome拷貝一個(gè)cURL,在命令行中跑一下瞧瞧結果即可,步驟如下
4.Postman
當然,大部分網(wǎng)站不是你拷貝一下cURL鏈接,改改其中參數就可以領(lǐng)到數據的,接下來(lái)我們做更深層次的剖析,就須要用到Postman“大殺器”了。為什么是“大殺器”呢?因為它著(zhù)實(shí)強悍。配合cURL,我們可以將懇求的內容直接移植過(guò)來(lái),然后對其中的懇求進(jìn)行整修,勾選即可選擇我們想要的內容參數,非常甜美
5.Online JavaScript Beautifier
用了以上的工具,你基本可以解決大部分網(wǎng)站了,算是一個(gè)合格的中級爬蟲(chóng)工程師了。這個(gè)時(shí)侯,我們想要進(jìn)階就須要面對更復雜的網(wǎng)站爬蟲(chóng)了,這個(gè)階段,你除了要會(huì )前端的知識,還須要了解一些后端的知識,因為好多網(wǎng)站的反爬舉措是置于后端的。你須要提取對方站點(diǎn)的js信息,并須要理解和逆向回家,原生的js代碼通常不適于閱讀,這時(shí),就要它來(lái)幫你低格吧
6.EditThisCookie
爬蟲(chóng)和反爬蟲(chóng)就是一場(chǎng)沒(méi)有烽煙的拉鋸戰,你永遠不知道對方會(huì )給你埋什么坑,比如對Cookies動(dòng)四肢。這個(gè)時(shí)侯你就須要它來(lái)輔助你剖析,通過(guò)Chrome安裝EditThisCookie插件后,我們可以通過(guò)點(diǎn)擊右上角小圖標,再對Cookies里的信息進(jìn)行增刪改查操作,大大提升對Cookies信息的模擬
7.Sketch
當我們早已確定能爬取以后,我們不應當著(zhù)急動(dòng)手寫(xiě)爬蟲(chóng)。而是應當著(zhù)手設計爬蟲(chóng)的結構。按照業(yè)務(wù)的需求,我們可以做一下簡(jiǎn)單的爬取剖析爬蟲(chóng)軟件,這有助于我們以后開(kāi)發(fā)的效率,所謂磨刀不誤砍柴工就是這個(gè)道理。比如可以考慮下,是搜索爬取還是遍歷爬???采用BFS還是DFS?并發(fā)的懇求數大約多少?考慮一下這種問(wèn)題后,我們可以通過(guò)Sketch來(lái)畫(huà)一下簡(jiǎn)單的構架圖
同類(lèi)工具:Illustrator、 Photoshop
終于要進(jìn)行開(kāi)發(fā)了,經(jīng)過(guò)前面的那些步驟,我們到這一步,已經(jīng)是萬(wàn)事俱備只欠東風(fēng)了。這個(gè)時(shí)侯,我們僅僅只須要做code和數據提取即可
8.XPath Helper
在提取網(wǎng)頁(yè)數據時(shí),我們通常須要使用xpath句型進(jìn)行頁(yè)面數據信息提取,一般地,但我們只能寫(xiě)完句型,發(fā)送懇求給對方網(wǎng)頁(yè),然后復印下來(lái),才曉得我們提取的數據是否正確,這樣一方面會(huì )發(fā)起好多不必要的懇求,另外一方面,也浪費了我們的時(shí)間。這個(gè)就可以用到XPath Helper了,通過(guò)Chrome安裝插件后,我們只須要點(diǎn)擊它在對應的xpath中寫(xiě)入句型,然后便可以太直觀(guān)地在左側看見(jiàn)我們的結果,效率up+10086
9.JSONView
我們有時(shí)候提取的數據是Json格式的,因為它簡(jiǎn)單易用,越來(lái)越多的網(wǎng)站傾向于用Json格式進(jìn)行數據傳輸。這個(gè)時(shí)侯,我們安裝這個(gè)插件后,就可以很方便的來(lái)查看Json數據啦
10.JSON Editor Online
JSONView是直接在網(wǎng)頁(yè)端返回的數據結果是Json,但多數時(shí)侯我們懇求的結果,都是后端渲染后的HTML網(wǎng)頁(yè)數據,我們發(fā)起懇求后得到的json數據,在終端(即terminal)中難以挺好的詮釋怎樣辦?借助JSON Editor Online就可以幫你挺好的低格數據啦,一秒低格,并且實(shí)現了貼心得折疊Json數據功能
既然見(jiàn)到這兒,相信大家一定是真愛(ài)粉啦,送大家一個(gè)彩蛋工具。
0.ScreenFloat
它能來(lái)干嘛?見(jiàn)名思意,就是一個(gè)屏幕漂浮工具,然而我近來(lái)才發(fā)覺(jué)它非常重要,尤其我們須要剖析參數時(shí),經(jīng)常須要在幾個(gè)界面來(lái)回切換,這個(gè)時(shí)侯有一些參數,我們須要比較她們的差別,這個(gè)時(shí)侯,你就可以通過(guò)它先漂浮著(zhù),不用在幾個(gè)界面中來(lái)切換。非常便捷。再送你一個(gè)隱藏玩法,比如前面這樣
有其他好用的工具,歡迎小伙伴留言哈!
-------------------End------------------- 查看全部
工欲善其事必先利其器的道理相信你們都懂。而作為常常要和各大網(wǎng)站做拉鋸戰的爬蟲(chóng)工程師們,則更需要借助借助好身邊的一切法器,以便更快的擊潰對方防線(xiàn)。今天我就以日常爬蟲(chóng)流程,給你們介紹十款工具,相信你們把握以后,必定才能在工作效率上,提升一個(gè)量級
1.Chrome
Chrome屬于爬蟲(chóng)的基礎工具,一般我們用它做初始的爬取剖析,頁(yè)面邏輯跳轉、簡(jiǎn)單的js調試、網(wǎng)絡(luò )懇求的步驟等。我們早期的大部分工作都在它里面完成,打個(gè)不恰當的比喻,不用Chrome,我們就要從智能時(shí)代倒退到馬車(chē)時(shí)代
同類(lèi)工具: Firefox、Safari、Opera
2.Charles
Charles與Chrome對應,只不過(guò)它是拿來(lái)做App端的網(wǎng)路剖析,相較于網(wǎng)頁(yè)端,App端的網(wǎng)路剖析較為簡(jiǎn)單爬蟲(chóng)軟件,重點(diǎn)放到剖析各個(gè)網(wǎng)路懇求的參數。當然,如果對方在服務(wù)端做了參數加密,那就涉及逆向工程方面的知識,那一塊又是一大筐子的工具,這里姑且不談
同類(lèi)工具:Fiddler、Wireshark、Anyproxy
3.cUrl
維基百科這樣介紹它
cURL是一個(gè)借助URL句型在命令行下工作的文件傳輸工具,1997年首次發(fā)行。它支持文件上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱(chēng)cURL為下載工具。cURL還包含了用于程序開(kāi)發(fā)的libcurl。
在做爬蟲(chóng)剖析時(shí),我們常常要模擬一下其中的懇求,這個(gè)時(shí)侯假如去寫(xiě)一段代碼,未免很小題大做了,直接通過(guò)Chrome拷貝一個(gè)cURL,在命令行中跑一下瞧瞧結果即可,步驟如下
4.Postman
當然,大部分網(wǎng)站不是你拷貝一下cURL鏈接,改改其中參數就可以領(lǐng)到數據的,接下來(lái)我們做更深層次的剖析,就須要用到Postman“大殺器”了。為什么是“大殺器”呢?因為它著(zhù)實(shí)強悍。配合cURL,我們可以將懇求的內容直接移植過(guò)來(lái),然后對其中的懇求進(jìn)行整修,勾選即可選擇我們想要的內容參數,非常甜美
5.Online JavaScript Beautifier
用了以上的工具,你基本可以解決大部分網(wǎng)站了,算是一個(gè)合格的中級爬蟲(chóng)工程師了。這個(gè)時(shí)侯,我們想要進(jìn)階就須要面對更復雜的網(wǎng)站爬蟲(chóng)了,這個(gè)階段,你除了要會(huì )前端的知識,還須要了解一些后端的知識,因為好多網(wǎng)站的反爬舉措是置于后端的。你須要提取對方站點(diǎn)的js信息,并須要理解和逆向回家,原生的js代碼通常不適于閱讀,這時(shí),就要它來(lái)幫你低格吧
6.EditThisCookie
爬蟲(chóng)和反爬蟲(chóng)就是一場(chǎng)沒(méi)有烽煙的拉鋸戰,你永遠不知道對方會(huì )給你埋什么坑,比如對Cookies動(dòng)四肢。這個(gè)時(shí)侯你就須要它來(lái)輔助你剖析,通過(guò)Chrome安裝EditThisCookie插件后,我們可以通過(guò)點(diǎn)擊右上角小圖標,再對Cookies里的信息進(jìn)行增刪改查操作,大大提升對Cookies信息的模擬
7.Sketch
當我們早已確定能爬取以后,我們不應當著(zhù)急動(dòng)手寫(xiě)爬蟲(chóng)。而是應當著(zhù)手設計爬蟲(chóng)的結構。按照業(yè)務(wù)的需求,我們可以做一下簡(jiǎn)單的爬取剖析爬蟲(chóng)軟件,這有助于我們以后開(kāi)發(fā)的效率,所謂磨刀不誤砍柴工就是這個(gè)道理。比如可以考慮下,是搜索爬取還是遍歷爬???采用BFS還是DFS?并發(fā)的懇求數大約多少?考慮一下這種問(wèn)題后,我們可以通過(guò)Sketch來(lái)畫(huà)一下簡(jiǎn)單的構架圖
同類(lèi)工具:Illustrator、 Photoshop
終于要進(jìn)行開(kāi)發(fā)了,經(jīng)過(guò)前面的那些步驟,我們到這一步,已經(jīng)是萬(wàn)事俱備只欠東風(fēng)了。這個(gè)時(shí)侯,我們僅僅只須要做code和數據提取即可
8.XPath Helper
在提取網(wǎng)頁(yè)數據時(shí),我們通常須要使用xpath句型進(jìn)行頁(yè)面數據信息提取,一般地,但我們只能寫(xiě)完句型,發(fā)送懇求給對方網(wǎng)頁(yè),然后復印下來(lái),才曉得我們提取的數據是否正確,這樣一方面會(huì )發(fā)起好多不必要的懇求,另外一方面,也浪費了我們的時(shí)間。這個(gè)就可以用到XPath Helper了,通過(guò)Chrome安裝插件后,我們只須要點(diǎn)擊它在對應的xpath中寫(xiě)入句型,然后便可以太直觀(guān)地在左側看見(jiàn)我們的結果,效率up+10086
9.JSONView
我們有時(shí)候提取的數據是Json格式的,因為它簡(jiǎn)單易用,越來(lái)越多的網(wǎng)站傾向于用Json格式進(jìn)行數據傳輸。這個(gè)時(shí)侯,我們安裝這個(gè)插件后,就可以很方便的來(lái)查看Json數據啦
10.JSON Editor Online
JSONView是直接在網(wǎng)頁(yè)端返回的數據結果是Json,但多數時(shí)侯我們懇求的結果,都是后端渲染后的HTML網(wǎng)頁(yè)數據,我們發(fā)起懇求后得到的json數據,在終端(即terminal)中難以挺好的詮釋怎樣辦?借助JSON Editor Online就可以幫你挺好的低格數據啦,一秒低格,并且實(shí)現了貼心得折疊Json數據功能
既然見(jiàn)到這兒,相信大家一定是真愛(ài)粉啦,送大家一個(gè)彩蛋工具。
0.ScreenFloat
它能來(lái)干嘛?見(jiàn)名思意,就是一個(gè)屏幕漂浮工具,然而我近來(lái)才發(fā)覺(jué)它非常重要,尤其我們須要剖析參數時(shí),經(jīng)常須要在幾個(gè)界面來(lái)回切換,這個(gè)時(shí)侯有一些參數,我們須要比較她們的差別,這個(gè)時(shí)侯,你就可以通過(guò)它先漂浮著(zhù),不用在幾個(gè)界面中來(lái)切換。非常便捷。再送你一個(gè)隱藏玩法,比如前面這樣
有其他好用的工具,歡迎小伙伴留言哈!
-------------------End-------------------


