一 知識域/學習路徑php
1.1 初級階段html
java: net(網絡編程)、IO、多線程(含:線程池)、正則表達式、集合、JDBC/數據庫等java
python: urllib.requestpython
NodeJs/JavaScript: httpweb
1.2 中級階段正則表達式
java: Jsoup(優點:HTML DOM解析)、HttpClient(優點:下載/IP代理等)、OKHttp、HTML Parser(優點:解析)、JavaScript/HTML(函數、JSON、Ajax、JacaScript DOM)等算法
NodeJs/JavaScript: express數據庫
1.3 進階express
java: web自動化測試框架selenium【WebDriver/ChromeDriver】(優點:下載/解析)
編程
python: scrapy、web自動化測試框架selenium(WebDriver/ChromeDriver)
NodeJs/JavaScript: web自動化測試框架(PhantomJS/ selenium)
1.4 高級階段
java: Heritrix網絡爬蟲框架
一個由 java 開發的、開源的網絡爬蟲,用戶能夠使用它來從網上抓取想要的資源。其最出色之處在於它良好的可擴展性,方便用戶實現本身的抓取邏輯。
1.5 涉及經驗
計算機網絡(網絡編程/ HTTP&TCP協議)
HTTP報文
報文頭:
請求方法: GET/POST .etc
遵循協議: HTTP / HTTPS .etc
請求體
網絡抓包與調試: Chrome開發者工具、Fiddle、Postman等
IP代理
文件操做
數據庫 / JDBC
數據結構(棧/隊列/List/Set/Map/深度優先/廣度優先等)
Cookie/Session
反爬蟲機制、模擬登錄
多線程編程
線程池/多線程爬行
分佈式爬蟲
可能涉及技巧:JS注入、模擬鼠標滑動、驗證碼識別(英文字母/數字/漢字/物品識別等)、延時請求(下降請求頻率)等
可能涉及語言:Python、Java、JavaScript、HTML、CSS等
網頁正文提取方法:Jsoup(基於 HTMLO DOM解析樹)等、Html2Article(基於行塊分佈函數的通用正文抽取算法)
二 入門級演示
2.1 Python簡易Demo
因爲Python3合併URLib與URLlib2統一爲URLlib,Python3將urlopen方法放在了urllib.request對象下。
官方文檔:https://docs.python.org/3/library/urllib.request.html#module-urllib.request
在實現爬取網頁過程當中,多次執行如下腳本:
#coding:UTF-8 import random; import urllib.request;# 不推薦使用 import urllib rawdata = urllib.request.urlopen('http://www.111cn.net/phper/python/68713.htm').read(); file = open("testfile","w+"); file.write(str(rawdata));
三 參考文檔
[1] Python3中urllib詳細使用方法(header,代理,超時,認證,異常處理)
[2] 基於行塊分佈函數的通用正文抽取算法.陳鑫.哈爾濱工業大學社會計算與信息檢索研究中心