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