13天搞定python網絡爬蟲

1. 什麼是爬蟲?

網絡爬蟲也叫網絡蜘蛛,如果把互聯網比喻成一個蜘蛛網,那麼蜘蛛就是在網上爬來爬去的蜘蛛,爬蟲程序通過請求url地址,根據響應的內容進行解析採集數據, 比如:如果響應內容是html,分析dom結構,進行dom解析、或者正則匹配,如果響應內容是xml/json數據,就可以轉數據對象,然後對數據進行解析。


13天搞定python網絡爬蟲


2. 有什麼作用?

通過有效的爬蟲手段批量採集數據,可以降低人工成本,提高有效數據量,給予運營/銷售的數據支撐,加快產品發展。

3. 業界的情況

目前互聯網產品競爭激烈,業界大部分都會使用爬蟲技術對競品產品的數據進行挖掘、採集、大數據分析,這是必備手段,並且很多公司都設立了爬蟲工程師的崗位

4. 合法性

爬蟲是利用程序進行批量爬取網頁上的公開信息,也就是前端顯示的數據信息。因為信息是完全公開的,所以是合法的。其實就像瀏覽器一樣,瀏覽器解析響應內容並渲染為頁面,而爬蟲解析響應內容採集想要的數據進行存儲。

5. 反爬蟲

爬蟲很難完全的制止,道高一尺魔高一丈,這是一場沒有硝煙的戰爭,碼農VS碼農

反爬蟲一些手段:

合法檢測:請求校驗(useragent,referer,接口加簽名,等)

小黑屋:IP/用戶限制請求頻率,或者直接攔截

投毒:反爬蟲高境界可以不用攔截,攔截是一時的,投毒返回虛假數據,可以誤導競品決策


13天搞定python網絡爬蟲

6. 選擇一門語言

爬蟲可以用各種語言寫, C++, Java都可以, 為什麼要Python?

首先用C++搞網絡開發的例子不多(可能是我見得太少) 然後由於Oracle收購了Sun, Java目前雖然在Android開發上很重要, 但是如果Google官司進展不順利, 那麼很有可能用Go語言替代掉Java來做Android開發. 在這計算機速度高速增長的年代裡, 選語言都要看他爹的業績, 真是稍不注意就落後於時代. 隨著計算機速度的高速發展, 某種語言開發的軟件運行的時間複雜度的常數係數已經不像以前那麼重要, 我們可以越來越偏愛為程序員打造的而不是為計算機打造的語言. 比如Ruby這種傳說中的純種而又飄逸的的OOP語言, 或者Python這種稍嚴謹而流行庫又非常多的語言, 都大大弱化了針對計算機運行速度而打造的特性, 強化了為程序員容易思考而打造的特性. 所以我選擇Python

7. 選擇Python版本

有2和3兩個版本, 3比較新, 聽說改動大. 根據我在知乎上搜集的觀點來看, 我還是傾向於使用”在趨勢中將會越來越火”的版本, 而非”目前已經很穩定而且很成熟”的版本. 這是個人喜好, 而且預測不一定準確. 但是如果Python3無法像Python2那麼火, 那麼整個Python語言就不可避免的隨著時間的推移越來越落後, 因此我想其實選哪個的最壞風險都一樣, 但是最好回報卻是Python3的大. 其實兩者區別也可以說大也可以說不大, 最終都不是什麼大問題. 我選擇的是Python 3

8. 爬蟲基本套路


13天搞定python網絡爬蟲

請求頭設置,如:useragant為有效客戶端

控制請求頻率(根據實際情景)

IP代理

簽名/加密參數從html/cookie/js分析

請求帶上用戶cookie信息

破解驗證碼

簡單的驗證碼可以使用識圖讀驗證碼第三方庫

解析數據

HTML Dom解析

正則匹配,通過的正則表達式來匹配想要爬取的數據,如:有些數據不是在html 標籤裡,而是在html的script 標籤的js變量中

使用第三方庫解析html dom,比較喜歡類jquery的庫

數據字符串

正則匹配(根據情景使用)

轉 JSON/XML 對象進行解析

9. python爬蟲

python寫爬蟲的優勢

python語法易學,容易上手

社區活躍,實現方案多可參考

各種功能包豐富

少量代碼即可完成強大功能

涉及模塊包

請求

urllib

requests

多線程

threading

正則

re

json解析

json

html dom解析

beautiful soup

lxml

xpath

操作瀏覽器

selenium


==========================13天搞定Python分佈爬蟲===========

===========================第1天===========================

01-爬蟲介紹

02-爬蟲軟件的安裝

03-第一個爬蟲

04-Request對象的使用

05-get請求的使用

06-貼吧案例

07-post請求的使用

===========================第2天===========================

08-ajax請求的抓取

09-https請求的使用

10-proxy的使用

11-cookie的使用1

12-cookie的使用2

13-URLError的使用

14-requests的使用

===========================第3天===========================

15-re的使用

16-糗事百科案例

17-BeautifulSoup的使用

18-xpath的使用

19-pyquery的使用

20-jsonpath的使用

===========================第4天===========================

21-多線程的使用

22-tesseract的使用

23-雲打碼平臺的使用

24-雲打碼登錄

25-爬取圖文並茂文章方法

26-selenium的使用

===========================第5天===========================

27-階段測試需求說明

28-貓眼測試xpath的寫法

29-貓眼測試bs4的寫法

30-貓眼測試re的寫法

31-貓眼測試pyquery的寫法

32-ChromeDriver開啟無頭模式

33-爬蟲複習

===========================第6天===========================

34-虎牙直播練習

35-selenium滾動條的使用

36-圖蟲圖片練習

37-雙色球練習數據下載

38-雙色球練習保存數據庫

39-雙色球練習數據更新

40-爬蟲新寫法1

41-爬蟲新寫法2

===========================第7天===========================

42-爬蟲的基本介紹

43-爬蟲的基本使用

44-爬蟲的數據提取

45-scrapy中pipeline中的使用

46-scrapy中settings的設置

47-scrapy中細節問題

48-scrapy爬取小說

49-scrapy中crawlspider的使用

===========================第8天===========================

50-scrapy中ImagePipeline的使用

51-scrapy中動態UA的使用

52-scrapy中動態代理的使用

53-scrapy登錄方式1

54-scrapy登錄方式2

55-scrapy登錄方式3

===========================第9天===========================

55-Mongo的使用

56-Mongo的數據庫實例與集合的操作

57-Mongo的數據基本操作(CRUD)

58-Mongo的數據查詢

59-Python與Mongo的交互

60-Scrapy中保存到數據庫

61-Scrapy中調試的使用

===========================第10天===========================

62-Splash的安裝

63-Splash如何打開服務

64-階段測試

65-scrapy內容補充

===========================第11天===========================

66-splash與requests結合

67-splash與scrapy的結合

68-selenium與scrapy的結合

69-某家內容爬取-數據解析

70-某家內容爬取-數據保存

===========================第12天===========================

71-scrapy-redis的介紹

72-linux的安裝

73-linux軟件安裝與克隆

74-scrapy-redis的windows環境安裝

75-scrapy_redis的寫法1

76-scrapy_redis的寫法

77-scrapy_redis的寫法2

78-從redis中取出數據到Mongo數據庫

===========================第13天===========================

0.1-Flask介紹與安裝

0.2-Flask的路由設置與參數接收

0.3-Flask的響應

0.4-Flask與Echarts的結合使用

番外1-51job需求與頁面分析

番外2-51job頁面解析1

番外3-51job頁面解析2

番外4-51job保存到數據庫

有問題可以留言或者私信我

備註:爬蟲


分享到:


相關文章: