摘要:背景介紹我大一的時(shí)候?qū)W校就開(kāi)設(shè)了,但是并沒(méi)有好好學(xué),基本等于是什么也不會(huì),最近才開(kāi)始看,所以本身也是摸著石頭過(guò)河,見(jiàn)諒心得講真的,爬蟲(chóng)確實(shí)不像別人想象的那樣簡(jiǎn)單,爬蟲(chóng)首先要靜下心來(lái),細(xì)心尋找目標(biāo)網(wǎng)站的布局規(guī)律,最重要的是的變化,這是一個(gè)考驗(yàn)
背景介紹
我大一的時(shí)候?qū)W校就開(kāi)設(shè)了 python,但是并沒(méi)有好好學(xué),基本等于是什么也不會(huì),最近才開(kāi)始看,所以本身也是摸著石頭過(guò)河,見(jiàn)諒...
心得講真的,爬蟲(chóng)確實(shí)不像別人想象的那樣簡(jiǎn)單,爬蟲(chóng)首先要靜下心來(lái),細(xì)心尋找目標(biāo)網(wǎng)站的布局規(guī)律,最重要的是 url 的變化,這是一個(gè)考驗(yàn)?zāi)托呐c細(xì)心的過(guò)程;爬蟲(chóng)沒(méi)有一個(gè)固定的套路,我們得時(shí)刻周旋于各種反爬蟲(chóng)機(jī)制中,并深陷不能自拔(sorry,廢話太多了),我們只能學(xué)習(xí)這種爬蟲(chóng)的思想,一定要多加練習(xí),掌握知識(shí)的最佳途徑就是實(shí)踐,不要眼高手低,跟著大神的腳步模仿、練習(xí),大神都是這樣一步一步走過(guò)來(lái)的,加油。。。
遇到的問(wèn)題首先我們要知道所謂的爬蟲(chóng)其實(shí)說(shuō)到原理上就是:1、如何獲取到想要的目標(biāo)信息?2、如何存入本地?3、如何轉(zhuǎn)換格式
基于這三點(diǎn)我來(lái)簡(jiǎn)單說(shuō)明一下
1、我在爬取百度貼吧的圖片時(shí),剛開(kāi)始也是一度彷徨,不知道該如何下手,于是我把教程看了好幾遍,又反復(fù)琢磨百度貼吧的html格式,終于我發(fā)現(xiàn)了我想要的數(shù)據(jù)的規(guī)律,從變化中尋求規(guī)律,這才是我們爬蟲(chóng)的解決之道,于是我發(fā)現(xiàn)它的 url 每次前半截基本都不會(huì)發(fā)生變化,并且會(huì)跟著相應(yīng)的翻頁(yè)數(shù)進(jìn)行變化,這是第一個(gè)規(guī)律
2、細(xì)心查找之下發(fā)現(xiàn),它的突變的標(biāo)簽的上下父子節(jié)點(diǎn)也基本是固定的,這也給我們帶來(lái)了很大的便捷,于是,我就在雖然這個(gè)圖片的地址是一直發(fā)生變化的,但是我們可以從它的父子節(jié)點(diǎn)入手從而可以拿到這個(gè)圖片的url地址,最后拿著這個(gè)url去請(qǐng)求圖片然后下載到本地這樣不就行了嘛
3、這樣我們的關(guān)注點(diǎn)就變成了如何拿到它的相關(guān)的父子節(jié)點(diǎn)信息呢?我仔細(xì)的查找了相關(guān)的知識(shí)點(diǎn),發(fā)現(xiàn)在python中,處理html數(shù)據(jù)的雖然有很多框架可以做到,但是有三大最流行的技術(shù):正則表達(dá)式,這個(gè)相信不用我多說(shuō)了,無(wú)論什么語(yǔ)言都有正則表達(dá)式,并且由于是各種語(yǔ)言內(nèi)置的,因此配置簡(jiǎn)單,但是使用難度是最高的(果然任何事物都有其有利有弊的一面,無(wú)所例外);第二個(gè)就是 xpath,這個(gè)相對(duì)于正則難度就要小點(diǎn),需要自己熟悉一下它的寫法,并且需要導(dǎo)入lxml這個(gè)庫(kù),在下載時(shí)需要注意(下載是比較麻煩的,我當(dāng)時(shí)就是搞了好久,版本一值不對(duì),考驗(yàn)?zāi)托模?;第三個(gè)就是 BeautifulSoup,這個(gè)是三個(gè)里面最簡(jiǎn)單的一個(gè),比較容易上手,有專門的官方文檔說(shuō)明(飛機(jī)票:https://beautifulsoup.readthe...)
4、我個(gè)人是比較推薦使用正則表達(dá)式的,什么效率方面的就不說(shuō)了,推崇的是它的使用面最廣,什么語(yǔ)言都可以直接使用(由于我本身還使用別的語(yǔ)言,比如java、scala、go、node、python等),所以這也是我特別青睞它的理由(正則基礎(chǔ)一定要學(xué)好,慢慢練習(xí),加油哦)
5、接下來(lái)就是數(shù)據(jù)處理了,這里我是將這些圖片直接保存到本項(xiàng)目下的一個(gè)文件夾下面了,后續(xù)可以配置數(shù)據(jù)庫(kù),直接寫入數(shù)據(jù)中。好了,大致思路就介紹到這里了,畢竟需要?jiǎng)邮肿鲆槐椴拍芾斫猓瑲g迎交流(ps:在源碼中也給出了我的私人郵箱哦)
#! /usr/bin/env python # -*- coding:utf-8 -*- """ 爬取百度貼吧的數(shù)據(jù) author : [email protected] data : 2018-11-07 22:27 """ import urllib2 import urllib def loadPage(url,filename): """ 作用:根據(jù) url 發(fā)送請(qǐng)求,獲取服務(wù)器響應(yīng)文件 :param url: 需要爬取的 url 地址 :return: """ print "正在下載 " + filename request = urllib2.Request(url,headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"}) response = urllib2.urlopen(request) return response.read() def writePage(html, filename): """ 作用:將 html 內(nèi)容寫入到本地 :param html: 服務(wù)器響應(yīng)文件內(nèi)容 :return: """ print "正在保存 " + filename # 文件寫入 with open(filename.decode("utf-8"), "w") as f: f.write(html) print "-" * 30 def tiebaSpider(url, beginPage, endPage): """ 作用:貼吧爬蟲(chóng)調(diào)度器,負(fù)責(zé)組合處理每個(gè)頁(yè)面的 url url : 貼吧 url 的前部分 beginPage:起始頁(yè) endPage:結(jié)束頁(yè) :return: """ for page in range(beginPage, endPage + 1): pn = (page - 1) * 50 filename = "第" + str(page) + "頁(yè).html" fullurl = url + "&pn=" + str(pn) print fullurl html = loadPage(fullurl,filename) #print html writePage(html,filename) if __name__ == "__main__": kw = raw_input("請(qǐng)輸入需要爬取的貼吧名:") beginPage = int(raw_input("請(qǐng)輸入起始頁(yè):")) endPage = int(raw_input("請(qǐng)輸入結(jié)束頁(yè):")) url = "http://tieba.baidu.com/f?" key = urllib.urlencode({"kw" : kw}) fullurl = url + key tiebaSpider(fullurl,beginPage,endPage)聲明
原創(chuàng)手敲不易,轉(zhuǎn)載請(qǐng)注明出處,謝謝。我是拉丁小毛,歡迎大家關(guān)注我哦,一起交流,共同進(jìn)步。有問(wèn)題可以郵我哦([email protected])
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44947.html
摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:楚江數(shù)據(jù)是專業(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ù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(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...
摘要:由于最新的視頻整頓風(fēng)波,內(nèi)涵段子被迫關(guān)閉,廣大段友無(wú)家可歸,但是最近發(fā)現(xiàn)了一個(gè)段友的,版本更新也挺快,正在號(hào)召?gòu)V大段友回家,如下圖,有興趣的可以下載看看我不是打廣告的,沒(méi)收廣告費(fèi)的同時(shí),之前同事也發(fā)了一個(gè)貼吧的段子聚居地,客官稍等,馬上奉上 由于最新的視頻整頓風(fēng)波,內(nèi)涵段子APP被迫關(guān)閉,廣大段友無(wú)家可歸,但是最近發(fā)現(xiàn)了一個(gè)段友的app,版本更新也挺快,正在號(hào)召?gòu)V大段友回家,如下圖,有...
摘要:上有一個(gè)關(guān)于下載百度貼吧里的美女圖片的練習(xí)題,最近正好在學(xué)爬蟲(chóng)相關(guān)的知識(shí),拿來(lái)練練手。這是我的目標(biāo)網(wǎng)頁(yè)。 Github上有一個(gè)關(guān)于下載百度貼吧里的美女圖片的練習(xí)題,最近正好在學(xué)爬蟲(chóng)相關(guān)的知識(shí),拿來(lái)練練手。這是我的目標(biāo)網(wǎng)頁(yè)。最開(kāi)始的時(shí)候我在網(wǎng)上找到一個(gè)類似的案例,代碼如下圖:showImg(https://segmentfault.com/img/bVbh2SX);稍作修改,運(yùn)行之后得到...
摘要:安裝可能的問(wèn)題問(wèn)題解決實(shí)例教程中文教程文檔第一步創(chuàng)建項(xiàng)目目錄第二步進(jìn)入創(chuàng)建爬蟲(chóng)第三步創(chuàng)建存儲(chǔ)容器,復(fù)制項(xiàng)目下的重命名為第四步修改提取數(shù)據(jù)引入數(shù)據(jù)容器第五步解決百度首頁(yè)網(wǎng)站抓取空白問(wèn)題設(shè)置設(shè)置用戶代理解決相關(guān)解決數(shù)據(jù)保存亂 pip 安裝 pip install scrapy 可能的問(wèn)題: 問(wèn)題/解決:error: Microsoft Visual C++ 14.0 is requi...
閱讀 2784·2021-11-23 09:51
閱讀 3539·2021-10-08 10:17
閱讀 1273·2021-10-08 10:05
閱讀 1327·2021-09-28 09:36
閱讀 1846·2021-09-13 10:30
閱讀 2186·2021-08-17 10:12
閱讀 1682·2019-08-30 15:54
閱讀 2011·2019-08-30 15:53