爬蟲入門基礎(chǔ)

爬蟲的入門基礎(chǔ)

什么是爬蟲挽懦?

網(wǎng)絡(luò)爬蟲(又被成為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機器人)约郁,就是模擬客戶端發(fā)起網(wǎng)絡(luò)請求,接收請求的響應(yīng)但两,按照一定的個規(guī)則鬓梅,自動的抓取互聯(lián)網(wǎng)信息的程序

爬蟲的基本流程

分析網(wǎng)站,得到目標url
根據(jù)url谨湘,發(fā)起請求绽快,獲取頁面的HTML源碼
從頁面源碼中提取數(shù)據(jù)  a. 提取到目標數(shù)據(jù)芥丧,做數(shù)據(jù)的篩選和持久化存儲 b. 從網(wǎng)頁中提取到新的url地址,繼續(xù)執(zhí)行第二步
爬蟲結(jié)束:所有的目標url都提取完坊罢,并且得到數(shù)據(jù)续担,再也沒有其他請求任務(wù)
網(wǎng)頁的三大特征

每一個網(wǎng)頁都有一個唯一的url(統(tǒng)一資源定位符),來進行定位
網(wǎng)頁都是通過HTML展示的
所有的網(wǎng)頁都是通過HTTP/HTTPS協(xié)議來傳輸?shù)?br> 通用爬蟲和聚焦爬蟲

通用爬蟲:是搜索引擎的重要組成部分  目的:盡可能的將所有的互聯(lián)網(wǎng)上的網(wǎng)頁下載到本地活孩,經(jīng)過預(yù)處理(去噪物遇,分詞,去廣告)憾儒,最終將數(shù)據(jù)存儲到本地询兴,做一個鏡像備份,形成一個檢索系統(tǒng)  缺點:  ∑鹬骸1.必須遵守robot協(xié)議:就是一個規(guī)范诗舰,告訴搜索引擎,哪些目錄下的資源允許爬蟲阳掐,哪些不允許  ∈夹啤2.搜索引擎返回的都是網(wǎng)頁冷蚂,并且返回的90%都是無用的數(shù)據(jù)  $员!3.不能根據(jù)不同用戶的需求或者檢索結(jié)果返回不同的結(jié)果   4.通用爬蟲對于媒體的文件不能獲取
聚焦爬蟲:聚焦爬蟲是面向主題的爬蟲蝙茶,再爬取數(shù)據(jù)的過程中對數(shù)據(jù)進行篩選艺骂,往往只會【爬取與需求相關(guān)的數(shù)據(jù)
Robot.txt

Robot協(xié)議(也稱為爬蟲協(xié)議、機器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標準”隆夯,Robot.txt是一個協(xié)議钳恕,而不是一個命令,他是國際互聯(lián)網(wǎng)界通行到的規(guī)范蹄衷,大型網(wǎng)站會通過Robot協(xié)議來告訴搜索引擎哪些頁面可以爬取忧额,哪些不能

參數(shù):

allow:允許爬取
disallow:不允許爬取
七層協(xié)議

從上往下 應(yīng)用層:為用戶的應(yīng)用程序提供網(wǎng)絡(luò)服務(wù)的(http,https,ftp...) 表示層:負責(zé)端到端的數(shù)據(jù)信息可以被另一個主機所理解和識別,并且按照一定的格式將信息傳遞到會話層 會話層:會話層是管理主機之間的會化進程愧口,負責(zé)建立睦番,管理,和終止會話進程 傳輸層:進行數(shù)據(jù)傳輸?shù)模╰cp udp) 網(wǎng)絡(luò)層:路由器 數(shù)據(jù)鏈路層:網(wǎng)橋 交換機 物理層:網(wǎng)線 網(wǎng)卡 集線器 中繼器

http和https協(xié)議

HTTP協(xié)議(HyperText Transfer Protocol)中文名叫超文本傳輸協(xié)議: 是用于從網(wǎng)絡(luò)傳送超文本數(shù)據(jù)到本地瀏覽器的傳送協(xié)議

HTTP協(xié)議(HyperText Transfer Protocol)中文名叫超文本傳輸協(xié)議: 是用于從網(wǎng)絡(luò)傳送超文本數(shù)據(jù)到本地瀏覽器的傳送協(xié)議

HTTP的端口號為80,HTTPS的端口號為443

HTTPS的安全基礎(chǔ)是SSL,因此通過它可以傳輸?shù)膬?nèi)容都是經(jīng)過SSL加密的耍属,主要作用是:

建立一個安全有效的信息傳送通道托嚣,保證數(shù)據(jù)傳送的安全性
確定網(wǎng)站的真實性和有效性
注意:HTTPS比HTTP更安全,但是性能更低

url的基本組成部分

基本格式:schema://host[:port#]/path/?[query-string][#]anchor schema:協(xié)議(例如:http, https, ftp) host:服務(wù)器的IP地址或者域名 path:訪問資源的路徑 query-string:參數(shù)厚骗,發(fā)送給http服務(wù)器的數(shù)據(jù) anchor:錨(跳轉(zhuǎn)到網(wǎng)頁的指定錨點位置)

請求的基本流程

from urllib import request

目標url

url = 'http://www.baidu.com'
response = request.urlopen(url,timeout=10)

從response響應(yīng)結(jié)果中獲取參數(shù)

狀態(tài)碼

code = response.status
print(code)

獲取頁面源碼的二進制數(shù)據(jù)

b_html = response.read()
print(b_html,len(b_html))

獲取響應(yīng)的相應(yīng)頭部(response headers)

res_headers = response.getheaders()
print(res_headers)

獲取響應(yīng)頭中指定參數(shù)的值

cokie_data = response.getheader('Set-Cookie')
print(cokie_data)

reason返回一個響應(yīng)結(jié)果的原因

reason = response.reason
print(reason)
get請求和post請求的區(qū)別 1.傳輸數(shù)據(jù)的大惺酒簟:對于GET,特定的 瀏覽器和服務(wù)器對URL的長度有限制领舰;對于POST夫嗓,由于不是URL傳值迟螺,理論上是不會受限制的,但是實際上各個服務(wù)器會規(guī)定對POST提交數(shù)據(jù)大小進 行限制啤月,Apache煮仇、IIS都有各自的配置。 2.安全性:POST的安全性比GET的高

請求頭的參數(shù) 'User-Agent':模擬瀏覽器進行請求 'Cookie':存儲在瀏覽器里面的,使用 cookie表明用戶的身份 'Refere':說明當前的請求是從哪個頁面發(fā)起的

常用的狀態(tài)碼

200:請求成功

301:永久重定向 302:臨時重定向

400:客戶端錯誤 401:未授權(quán) 403:服務(wù)器拒絕訪問 404:頁面未找到 405:請求方式不對 408:請求超時

500:服務(wù)器錯誤 503:服務(wù)器不可用

bytes類型和str字符串類型的相互轉(zhuǎn)換,bytes和bytearray的區(qū)別

1.bytes是Python 3中特有的谎仲,Python 2 里不區(qū)分bytes和str浙垫。 2.str類型使用encode方法轉(zhuǎn)化為bytes類型 bytes類型通過decode轉(zhuǎn)化為str類型 3.bytearray bytearray和bytes不一樣的地方在于,bytearray是可變的郑诺。

如何發(fā)起一個get請求

response = response.get
('www.baidu.com')

正則的基本用法:
. :表示匹配除了換行符之外的任意字符
\ :轉(zhuǎn)義字符
[a-z] : 匹配a-z里面的任意一個字符

\d: 匹配數(shù)字 -> [0-9]
\D: 匹配非數(shù)字 [^\d]
\s: 匹配空白字符(空格,\n,\t...)
\S: 匹配非空白字符 
\w: 匹配單詞字符 [A-Za-z0-9_]
\W: 匹配非單子字符

^:匹配以...開頭
$:匹配以....結(jié)尾

():分組
|:或

多字符匹配
*:匹配*前面的字符任意次數(shù)

  • : 匹配+號前面的字符至少1次
    夹姥?: 匹配?前面的字符0次或1次
    {m}:匹配{m}前面的字符m次
    {m,n}:匹配{m,n}前面的字符m~n次

非貪婪匹配
*?
+?
??
{m,n}?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辙诞,一起剝皮案震驚了整個濱河市辙售,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌飞涂,老刑警劉巖旦部,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異较店,居然都是意外死亡士八,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門梁呈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婚度,“玉大人,你說我怎么就攤上這事官卡』茸拢” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵寻咒,是天一觀的道長哮翘。 經(jīng)常有香客問我,道長毛秘,這世上最難降的妖魔是什么饭寺? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮熔脂,結(jié)果婚禮上佩研,老公的妹妹穿的比我還像新娘。我一直安慰自己霞揉,他們只是感情好旬薯,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著适秩,像睡著了一般绊序。 火紅的嫁衣襯著肌膚如雪硕舆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天骤公,我揣著相機與錄音抚官,去河邊找鬼。 笑死阶捆,一個胖子當著我的面吹牛凌节,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播洒试,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼倍奢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了垒棋?” 一聲冷哼從身側(cè)響起卒煞,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叼架,沒想到半個月后畔裕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡乖订,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年扮饶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垢粮。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡贴届,死狀恐怖靠粪,靈堂內(nèi)的尸體忽然破棺而出蜡吧,到底是詐尸還是另有隱情,我是刑警寧澤占键,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布昔善,位于F島的核電站,受9級特大地震影響畔乙,放射性物質(zhì)發(fā)生泄漏君仆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一牲距、第九天 我趴在偏房一處隱蔽的房頂上張望返咱。 院中可真熱鬧,春花似錦牍鞠、人聲如沸咖摹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萤晴。三九已至吐句,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間店读,已是汗流浹背嗦枢。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屯断,地道東北人文虏。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像殖演,于是被迫代替她去往敵國和親择葡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容