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