python爬蟲(1)

瞭解python的基本語法後就能夠開始了,邊學邊鞏固。php

學爬蟲那什麼是網絡爬蟲,如下是百度百科的定義:網絡爬蟲(又被稱爲網頁蜘蛛,網絡機器人,css

FOAF社區中間,更常常的稱爲網頁追逐者),是一種按照必定的規則,自動地抓取萬維網信息的程序或者腳本。html

另一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲python

 

找資源的源頭應該是URL,這是我我的的理解:數據庫

URL的格式由三部分組成:
①第一部分是協議(或稱爲服務方式)。
②第二部分是存有該資源的主機IP地址(有時也包括端口號)。
③第三部分是主機資源的具體地址,如目錄和文件名等。瀏覽器

執行的版本是python2.7, 開發工具是JetBrains PyCharm 5.0緩存

==========================================================
import urllib2

response = urllib2.urlopen("http://www.baidu.com")
print response.read()

==========================================================
輸出是一大堆html,css,js代碼,後面要研究的是也是這些材料,具體說是解析器要作的。
網絡爬蟲的組成
在網絡爬蟲的系統框架中,主過程由控制器,解析器,資源庫三部分組成。控制器的主要工做是負責給多線程中的各個爬蟲線程分配工做任務。解析器的主要工做是下載網頁,進行頁面的處理,主要是將一些JS腳本標籤、CSS代碼內容、空格字符、HTML標籤等內容處理掉,爬蟲的基本工做是由解析器完成。資源庫是用來存放下載到的網頁資源,通常都採用大型的數據庫存儲,如Oracle數據庫,並對其創建索引。
控制器
控制器是網絡爬蟲的中央控制器,它主要是負責根據系統傳過來的URL連接,分配一線程,而後啓動線程調用爬蟲爬取網頁的過程。
解析器
解析器是負責網絡爬蟲的主要部分,其負責的工做主要有:下載網頁的功能,對網頁的文本進行處理,如過濾功能,抽取特殊HTML標籤的功能,分析數據功能。
資源庫
主要是用來存儲網頁中下載下來的數據記錄的容器,並提供生成索引的目標源。中大型的數據庫產品有:Oracle、Sql Server等。
 
 

HTTP是基於請求和應答機制的--客戶端提出請求,服務端提供應答。安全

urllib2用一個Request對象來映射你提出的HTTP請求,在它最簡單的使用形式中你將用你要請求的服務器

地址建立一個Request對象,經過調用urlopen並傳入Request對象,將返回一個相關請求response對象,網絡

這個應答對象如同一個文件對象,因此你能夠在Response中調用.read()。

==========================================================
import urllib2

req = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(req)
print response.read()
==========================================================
以上代碼更能體現http的過程。

在urlopen中除了"http:",URL一樣可使用"ftp:","file:"等等來替代

1.GET請求的數據會附在URL以後(就是把數據放置在HTTP協議頭中),以?分割URL和傳輸數據,

參數之間以&相連,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。

若是數據是英文字母/數字,原樣發送,若是是空格,轉換爲+,若是是中文/其餘字符,則直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX爲該符號以16進製表示的ASCII。POST把提交的數據則放置在是HTTP包的包體中。

 

2."GET方式提交的數據最多隻能是1024字節,理論上POST沒有限制,可傳較大量的數據,這個限制是特定的瀏覽器及服務器對它的限制。

3.POST的安全性要比GET的安全性高。注意:這裏所說的安全性和上面GET提到的「安全」不是同個概念。上面「安全」的含義僅僅是不做數據修改,而這裏安全的含義是真正的Security的含義,好比:經過GET提交數據,用戶名和密碼將明文出如今URL上,由於(1)登陸頁面有可能被瀏覽器緩存,(2)其餘人查看瀏覽器的歷史紀錄,那麼別人就能夠拿到你的帳號和密碼了,除此以外,使用GET提交數據還可能會形成Cross-site request forgery攻擊。
相關文章
相關標籤/搜索