導航:首頁 > 源碼編譯 > 爬蟲源碼

爬蟲源碼

發布時間:2022-02-21 00:05:05

1. 求C# 爬蟲 完整源碼

可以參考這個
http://tool.sufeinet.com/CodePreview/CodeView.aspx?action=view&file=1-HttpHelper/HttpHelper.cs

2. python 爬蟲代碼

你先看一下urllib、urllib2和正則吧

3. 求網路爬蟲源代碼VC++編寫的

爬蟲類的程序最好用C#或C++/CLI完全用C++實現的要做大量Http協議和Html解析的東西,使用 .Net類庫的Http下載和正則表達式可以非常方便地做這些東西。

4. 求,明星python教程的爬蟲實踐項目源碼!

你指的是在某課堂平台上的公開課那次的視頻嗎??
我在這個課堂上來著,,老師講的確實還不錯,但是我沒有錄制視頻。
建議你可以找助教老師那些要一下,,去公開課網址上找號碼就行

5. python 爬蟲代碼 有了爬蟲代碼怎麼運行

6. 剛學爬蟲,這為什麼得到的不是源代碼

爬蟲的水很深的,很多網站都有反爬措施,常用Ajax非同步載入或javaScript對內容進行加密等手段反爬。另外要注意的是,爬蟲是有法律風險的。

7. 有人有簡單爬蟲源碼可以學習嗎

爬蟲學習之一個簡單的網路爬蟲

概述

這是一個網路爬蟲學習的技術分享,主要通過一些實際的案例對爬蟲的原理進行分析,達到對爬蟲有個基本的認識,並且能夠根據自己的需要爬到想要的數據。有了數據後可以做數據分析或者通過其他方式重新結構化展示。

什麼是網路爬蟲

網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。via網路網路爬蟲
網路蜘蛛(Web spider)也叫網路爬蟲(Web crawler)[1],螞蟻(ant),自動檢索工具(automatic indexer),或者(在FOAF軟體概念中)網路疾走(WEB scutter),是一種「自動化瀏覽網路」的程序,或者說是一種網路機器人。它們被廣泛用於互聯網搜索引擎或其他類似網站,以獲取或更新這些網站的內容和檢索方式。它們可以自動採集所有其能夠訪問到的頁面內容,以供搜索引擎做進一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們需要的信息。via維基網路網路蜘蛛

以上是網路和維基網路對網路爬蟲的定義,簡單來說爬蟲就是抓取目標網站內容的工具,一般是根據定義的行為自動進行抓取,更智能的爬蟲會自動分析目標網站結構類似與搜索引擎的爬蟲,我們這里只討論基本的爬蟲原理。

###爬蟲工作原理

網路爬蟲框架主要由控制器、解析器和索引庫三大部分組成,而爬蟲工作原理主要是解析器這個環節,解析器的主要工作是下載網頁,進行頁面的處理,主要是將一些JS腳本標簽、CSS代碼內容、空格字元、HTML標簽等內容處理掉,爬蟲的基本工作是由解析器完成。所以解析器的具體流程是:

入口訪問->下載內容->分析結構->提取內容

分析爬蟲目標結構

這里我們通過分析一個網站[落網:http://luoo.net] 對網站內容進行提取來進一步了解!

第一步 確定目的
抓取目標網站的某一期所有音樂

第二步 分析頁面結構
訪問落網的某一期刊,通過Chrome的開發者模式查看播放列表中的歌曲,右側用紅色框線圈出來的是一些需要特別注意的語義結構,見下圖所示:

以上紅色框線圈出的地方主要有歌曲名稱,歌曲的編號等,這里並沒有看到歌曲的實際文件地址,所以我們繼續查看,點擊某一個歌曲就會立即在瀏覽器中播放,這時我們可以看到在Chrome的開發者模式的Network中看到實際請求的播放文件,如下圖所示:

根據以上分析我們可以得到播放清單的位置和音樂文件的路徑,接下來我們通過Python來實現這個目的。

實現爬蟲

Python環境安裝請自行Google

主要依賴第三方庫

Requests(http://www.python-requests.org) 用來發起請求
BeautifulSoup(bs4) 用來解析HTML結構並提取內容
faker(http://fake-factory.readthedocs.io/en/stable/)用來模擬請求UA(User-Agent)

主要思路是分成兩部分,第一部分用來發起請求分析出播放列表然後丟到隊列中,第二部分在隊列中逐條下載文件到本地,一般分析列錶速度更快,下載速度比較慢可以藉助多線程同時進行下載。
主要代碼如下:

#-*- coding: utf-8 -*-'''by sudo rm -rf http://imchenkun.com'''import osimport requestsfrom bs4 import BeautifulSoupimport randomfrom faker import Factoryimport Queueimport threadingfake = Factory.create()luoo_site = 'http://www.luoo.net/music/'luoo_site_mp3 = 'http://luoo-mp3.kssws.ks-cdn.com/low/luoo/radio%s/%s.mp3'proxy_ips = [ '27.15.236.236' ] # 替換自己的代理IPheaders = { 'Connection': 'keep-alive', 'User-Agent': fake.user_agent() }def random_proxies(): ip_index = random.randint(0, len(proxy_ips)-1) res = { 'http': proxy_ips[ip_index] } return resdef fix_characters(s): for c in ['<', '>', ':', '"', '/', '\\', '|', '?', '*']: s = s.replace(c, '') return sclass LuooSpider(threading.Thread): def __init__(self, url, vols, queue=None): threading.Thread.__init__(self) print '[luoo spider]' print '=' * 20 self.url = url self.queue = queue self.vol = '1' self.vols = vols def run(self): for vol in self.vols: self.spider(vol) print '\ncrawl end\n\n' def spider(self, vol): url = luoo_site + vol print 'crawling: ' + url + '\n' res = requests.get(url, proxies=random_proxies()) soup = BeautifulSoup(res.content, 'html.parser') title = soup.find('span', attrs={'class': 'vol-title'}).text cover = soup.find('img', attrs={'class': 'vol-cover'})['src'] desc = soup.find('div', attrs={'class': 'vol-desc'}) track_names = soup.find_all('a', attrs={'class': 'trackname'}) track_count = len(track_names) tracks = [] for track in track_names: _id = str(int(track.text[:2])) if (int(vol) < 12) else track.text[:2] # 12期前的音樂編號1~9是1位(如:1~9),之後的都是2位 1~9會在左邊墊0(如:01~09) _name = fix_characters(track.text[4:]) tracks.append({'id': _id, 'name': _name}) phases = { 'phase': vol, # 期刊編號 'title': title, # 期刊標題 'cover': cover, # 期刊封面 'desc': desc, # 期刊描述 'track_count': track_count, # 節目數 'tracks': tracks # 節目清單(節目編號,節目名稱) } self.queue.put(phases)class LuooDownloader(threading.Thread): def __init__(self, url, dist, queue=None): threading.Thread.__init__(self) self.url = url self.queue = queue self.dist = dist self.__counter = 0 def run(self): while True: if self.queue.qsize() <= 0: pass else: phases = self.queue.get() self.download(phases) def download(self, phases): for track in phases['tracks']: file_url = self.url % (phases['phase'], track['id']) local_file_dict = '%s/%s' % (self.dist, phases['phase']) if not os.path.exists(local_file_dict): os.makedirs(local_file_dict) local_file = '%s/%s.%s.mp3' % (local_file_dict, track['id'], track['name']) if not os.path.isfile(local_file): print 'downloading: ' + track['name'] res = requests.get(file_url, proxies=random_proxies(), headers=headers) with open(local_file, 'wb') as f: f.write(res.content) f.close() print 'done.\n' else: print 'break: ' + track['name']if __name__ == '__main__': spider_queue = Queue.Queue() luoo = LuooSpider(luoo_site, vols=['680', '721', '725', '720'],queue=spider_queue) luoo.setDaemon(True) luoo.start() downloader_count = 5 for i in range(downloader_count): luoo_download = LuooDownloader(luoo_site_mp3, 'D:/luoo', queue=spider_queue) luoo_download.setDaemon(True) luoo_download.start()

以上代碼執行後結果如下圖所示


Github地址:https://github.com/imchenkun/ick-spider/blob/master/luoospider.py

總結

通過本文我們基本了解了網路爬蟲的知識,對網路爬蟲工作原理認識的同時我們實現了一個真實的案例場景,這里主要是使用一些基礎的第三方Python庫來幫助我們實現爬蟲,基本上演示了網路爬蟲框架中基本的核心概念。通常工作中我們會使用一些比較優秀的爬蟲框架來快速的實現需求,比如scrapy框架,接下來我會通過使用Scrapy這類爬蟲框架來實現一個新的爬蟲來加深對網路爬蟲的理解!

8. python爬蟲怎麼獲取動態的網頁源碼

一個月前實習導師布置任務說通過網路爬蟲獲取深圳市氣象局發布的降雨數據,網頁如下:

心想,爬蟲不太難的,當年跟zjb爬煎蛋網無(mei)聊(zi)圖的時候,多麼清高。由於接受任務後的一個月考試加作業一大堆,導師也不催,自己也不急。

但是,導師等我一個月都得讓我來寫意味著這東西得有多難吧。。。今天打開一看的確是這樣。網站是基於Ajax寫的,數據動態獲取,所以無法通過下載源代碼然後解析獲得。

從某不良少年寫的抓取淘寶mm的例子中收到啟發,對於這樣的情況,一般可以同構自己搭建瀏覽器實現。phantomJs,CasperJS都是不錯的選擇。

導師的要求是獲取過去一年內深圳每個區每個站點每小時的降雨量,執行該操作需要通過如上圖中的歷史查詢實現,即通過一個時間來查詢,而這個時間存放在一個hidden類型的input標簽里,當然可以通過js語句將其改為text類型,然後執行send_keys之類的操作。然而,我失敗了。時間可以修改設置,可是結果如下圖。

為此,僅抓取實時數據。選取python的selenium,模擬搭建瀏覽器,模擬人為的點擊等操作實現數據生成和獲取。selenium的一大優點就是能獲取網頁渲染後的源代碼,即執行操作後的源代碼。普通的通過 url解析網頁的方式只能獲取給定的數據,不能實現與用戶之間的交互。selenium通過獲取渲染後的網頁源碼,並通過豐富的查找工具,個人認為最好用的就是find_element_by_xpath("xxx"),通過該方式查找到元素後可執行點擊、輸入等事件,進而向伺服器發出請求,獲取所需的數據。

[python]view plain

9. 關於爬蟲爬不到源碼的問題

這是用javascript執行的頁面。一般爬蟲讀不到HTML源碼,也不能填入表格。
可以在Chrome或Firefox設置Live HTTP Header,啟動後,手工填入表格。 Live HTTP Header會顯示這頁面如何透過javascript把資料傳給隱藏的php頁面。然後用curl的POST執行就可。
谷歌搜索 using-php-to-scrape-javascript-jquery-json-websites 看看。

10. 爬蟲代碼

好吧,我寫了一個不是非常好的爬蟲,給你發過去,你自己看看吧。代碼已發送。

閱讀全文

與爬蟲源碼相關的資料

熱點內容
曙光伺服器怎麼創建用戶 瀏覽:720
命令文案例 瀏覽:798
識別什麼花app 瀏覽:818
線上app是什麼意思 瀏覽:43
單片機屏蔽部分埠 瀏覽:327
蘋果版app是什麼 瀏覽:744
雲伺服器能更換地址 瀏覽:76
linux預讀演算法 瀏覽:558
視頻用什麼app編輯 瀏覽:70
編譯原理清華實驗 瀏覽:978
閑蛋app人氣怎麼樣 瀏覽:275
javacatch用法 瀏覽:861
京峰教育python 瀏覽:986
加密貨幣戰勝法定貨幣 瀏覽:687
混凝土結構中冊pdf 瀏覽:932
永劫無間解壓不了怎麼回事 瀏覽:811
php如何開啟curl 瀏覽:676
紅黃文件夾 瀏覽:127
違背皇帝的命令是死罪嗎 瀏覽:70
phpcurl處理錯誤 瀏覽:463