摘要:想辦法區(qū)分爬蟲(chóng)程序和正常的用戶。爬蟲(chóng)是工具性程序,對(duì)速度和效率要求較高。生態(tài)圈完善,是最大對(duì)手。最要命的是爬蟲(chóng)需要經(jīng)常修改部分代碼。爬蟲(chóng)分類(lèi)通用爬蟲(chóng)也就是百度搜狐等搜索引擎。原本是為測(cè)試來(lái)測(cè)試網(wǎng)站的,后來(lái)成了爬蟲(chóng)工程師最喜愛(ài)的工具。
一、爬蟲(chóng)的基本知識(shí):
1. 什么是爬蟲(chóng)
爬蟲(chóng)的英文翻譯為spider或者crawder,意為蜘蛛或者爬行者,從字面意思我們可以體會(huì)到:爬蟲(chóng)就是把自己當(dāng)做蜘蛛或者爬行者,沿著既定路線,爬到指定節(jié)點(diǎn),獵取食物獲取目標(biāo)。在這里我們的蜘蛛網(wǎng)即互聯(lián)網(wǎng),我們爬取的方法即為路徑,我們所要獲取的數(shù)據(jù)即為食物或目標(biāo)。
2. 爬蟲(chóng)的核心
爬取網(wǎng)頁(yè)
解析數(shù)據(jù)
難點(diǎn):與反爬蟲(chóng)博弈(反爬蟲(chóng): 資源的所有者,想要保護(hù)資源,避免被第三方爬蟲(chóng)程序批量的把資源下載下去。想辦法區(qū)分爬蟲(chóng)程序和正常的用戶。)
3. 爬蟲(chóng)的語(yǔ)言
php:雖然是世界上最好的語(yǔ)言,但是天生不是干爬蟲(chóng)的命,PHP對(duì)多線程、異步支持不足,并發(fā)不足。爬蟲(chóng)是工具性程序,對(duì)速度和效率要求較高。
java:生態(tài)圈完善,是Python最大對(duì)手。但是Java本身很笨重,代碼量大。重構(gòu)成本比較高,任何修改都會(huì)導(dǎo)致大量代碼的變動(dòng)。最要命的是爬蟲(chóng)需要經(jīng)常修改部分代碼。
CC++:運(yùn)行效率和性能幾乎最強(qiáng),但是學(xué)習(xí)成本非常高,代碼成型較慢,能用C/C++寫(xiě)爬蟲(chóng),說(shuō)明能力很強(qiáng),但是不是最正確的選擇
Python:語(yǔ)法優(yōu)美、代碼簡(jiǎn)介、開(kāi)發(fā)效率高、三方模塊多,調(diào)用其他接口也方便。有強(qiáng)大的爬蟲(chóng)Scrapy,以及成熟高效的scrapy-redis分布式策略。
4. 爬蟲(chóng)分類(lèi)
通用爬蟲(chóng)
也就是百度、Google、360、搜狐、firefox等搜索引擎。特點(diǎn)是爬取網(wǎng)站所有內(nèi)容、但不能根據(jù)客戶需求給出特定內(nèi)容。在這里,各家瀏覽器根據(jù)其pagerank分進(jìn)行網(wǎng)站搜索的排名,同時(shí)還有競(jìng)價(jià)排名。
聚焦爬蟲(chóng)
就是現(xiàn)在我們這些爬蟲(chóng)程序員所進(jìn)行的工作,就是根據(jù)客戶的需求,爬取指定網(wǎng)站的特定內(nèi)容。
1. 首先要理解什么是http/https協(xié)議
http協(xié)議:菜鳥(niǎo)教程:http協(xié)議詳解
https協(xié)議:菜鳥(niǎo)教程:https協(xié)議詳解
2. python基礎(chǔ)知識(shí)
urllib.request
urllib.parse
正則表達(dá)式等等基礎(chǔ)知識(shí)。
3. 開(kāi)發(fā)工具
pacharm:下載安裝請(qǐng)參考菜鳥(niǎo)教程:pycharm下載安裝教程
sublime Text3:下載安裝請(qǐng)參考菜鳥(niǎo)教程:sublime下載安裝
4. 抓包工具
chrome瀏覽器的開(kāi)發(fā)者模式,在這里可以檢查網(wǎng)頁(yè)的各種元素。
fiddler:原本是為測(cè)試來(lái)測(cè)試網(wǎng)站的,后來(lái)成了爬蟲(chóng)工程師最喜愛(ài)的工具。這是一款開(kāi)源軟件,可以直接去官網(wǎng)下載安裝https://www.telerik.com/downl...
postman:可以根據(jù)請(qǐng)求頭信息生成簡(jiǎn)單的網(wǎng)頁(yè)爬取代碼,界面相對(duì)于fiddler也要美觀
motimproxy
三、代碼實(shí)現(xiàn)簡(jiǎn)單的爬蟲(chóng)實(shí)例
python爬蟲(chóng)有多簡(jiǎn)單,下面我一行代碼爬取百度首頁(yè),如同在瀏覽器輸入網(wǎng)址一樣簡(jiǎn)單
import urllib.request urllib.request.urlretrieve("http://www.baidu.com/", "baidu.html")
上面的代碼只能簡(jiǎn)單抓取網(wǎng)頁(yè),一旦遇到需要請(qǐng)求頭的反爬蟲(chóng)時(shí)就不能發(fā)揮作用了,所以一般常用的爬蟲(chóng)代碼如下:
import urllib.request url = "http://www.baidu.com/" request = urllib.request.Request(url) response = urllib.request.urlopen(request) with open("baidu.html", "wb") as f: f.write(response.read())
請(qǐng)求頭反反爬蟲(chóng):
import urllib.request #指定url url = "https://www.qiushibaike.com/" #定義請(qǐng)求頭對(duì)象 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36" } #獲取網(wǎng)頁(yè)信息 request = urllib.request.Request(url, headers=headers) response = urllib.request.urlopen(request) with open("xiushi.html","wb") as f: f.write(response.read())
今天先寫(xiě)到這兒了,我爭(zhēng)取做到每日分享,與大家一起學(xué)習(xí),一起進(jìn)步,為了美好的明天,艱苦奮斗。 ————你與別人的差距在加班的時(shí)間。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42013.html
摘要:楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),。本文來(lái)源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲(chóng)軟件定制開(kāi)發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類(lèi)信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲(chóng)學(xué)習(xí)系列教程(來(lái)源于某博主:htt...
摘要:以下這些項(xiàng)目,你拿來(lái)學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲(chóng)達(dá)到效率最高,也就是所謂的爬蟲(chóng)策略問(wèn)題,爬蟲(chóng)策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲(chóng)的設(shè)計(jì)方案,比如說(shuō)。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法...
摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:目錄基于的爬蟲(chóng)入門(mén)環(huán)境搭建基于的爬蟲(chóng)入門(mén)頁(yè)面提取基于的爬蟲(chóng)入門(mén)圖片處理下面創(chuàng)建一個(gè)爬蟲(chóng)項(xiàng)目,以圖蟲(chóng)網(wǎng)為例抓取圖片。 目錄 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):環(huán)境搭建 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):頁(yè)面提取 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):圖片處理 下面創(chuàng)建一個(gè)爬蟲(chóng)項(xiàng)目,以圖蟲(chóng)網(wǎng)為例抓取圖片。 一、內(nèi)容分析 打開(kāi) 圖蟲(chóng)網(wǎng),頂部菜單發(fā)現(xiàn)...
摘要:一基礎(chǔ)環(huán)境由于不是職業(yè)的開(kāi)發(fā)者,因此環(huán)境是基于的。二安裝打開(kāi)命令行工具創(chuàng)建虛擬環(huán)境,默認(rèn)情況下會(huì)創(chuàng)建目錄,所有的虛擬環(huán)境都會(huì)產(chǎn)生一個(gè)子目錄保存在此,里面包含基本程序文件以及庫(kù)文件。 目錄 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):環(huán)境搭建 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):頁(yè)面提取 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):圖片處理 作為一個(gè)全棧工程師(...
閱讀 1958·2021-11-22 09:34
閱讀 3209·2019-08-30 15:55
閱讀 773·2019-08-30 15:53
閱讀 2148·2019-08-30 15:52
閱讀 3075·2019-08-29 18:32
閱讀 2101·2019-08-29 17:15
閱讀 2478·2019-08-29 13:14
閱讀 3646·2019-08-28 18:05