網絡爬蟲經驗小結

一 知識域/學習路徑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] 基於行塊分佈函數的通用正文抽取算法.陳鑫.哈爾濱工業大學社會計算與信息檢索研究中心

  [3] 網頁正文提取——Html2Article

相關文章
相關標籤/搜索