python爬蟲之爬取豆瓣top250圖書信息

先上代碼:

import requests
from bs4 import BeautifulSoup
import time

class top250books():
    def html(self, href):
        max_span = 225
        for page in range(0, int(max_span), 25):
            page_url = href + '?start=' + str(page)
            self.parse(page_url)

    def parse(self, url):
        html = self.request(url)
        all_tables = BeautifulSoup(html.text, 'lxml').find('div',  class_='indent').find_all('table')
        for table in all_tables:
            time.sleep(0.5)
            title = table.find('div', class_='pl2').find('a').get_text()
            info = table.find('p', class_='pl').get_text()
            rating_nums = table.find('span', class_='rating_nums').get_text()
            rating_people = table.find('span', class_='pl').get_text()
            quote = table.find('span', class_='inq').get_text()
            f = open('test.txt', 'ab')
            f.write(("".join(title.split()) + " ").encode('utf-8'))
            f.write(("".join(info.split()) + " ").encode('utf-8'))
            f.write(("".join(rating_nums.split()) + " ").encode('utf-8'))
            f.write(("".join(rating_people.split()) + " ").encode('utf-8'))
            f.write(("".join(quote.split()) + " " + '\n').encode('utf-8'))
            f.close()
            print("".join(title.split()))

    def request(self, url):
        headers = { 'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, like Gecko) Version/10.0.3 Safari/602.4.8"}
        content = requests.get(url, headers=headers)
        return content

books = top250books()
books.html('https://book.douban.com/top250')

下面是爬取的部分內(nèi)容:

追風(fēng)箏的人 [美]卡勒德·胡賽尼/李繼宏/上海人民出版社/2006-5/29.00元 8.8 (260575人評價) 為你,千千萬萬遍 
小王子 [法]圣埃克蘇佩里/馬振聘/人民文學(xué)出版社/2003-8/22.00元 9.0 (215493人評價) 獻(xiàn)給長成了大人的孩子們 
圍城 錢鍾書/人民文學(xué)出版社/1991-2/19.00 8.9 (182470人評價) 對于“人艱不拆”四個字最徹底的違抗 
活著 余華/南海出版公司/1998-5/12.00元 9.1 (123542人評價) 活著本身就是人生最大的意義 
解憂雜貨店 [日]東野圭吾/李盈春/南海出版公司/2014-5/39.50元 8.6 (190788人評價) 一碗精心熬制的東野牌雞湯周循,拒絕很難 
白夜行 [日]東野圭吾/劉姿君/南海出版公司/2008-9/29.80元 9.1 (179501人評價) 暗夜獨行的殘破靈魂,愛與惡本就難分難舍 
挪威的森林 [日]村上春樹/林少華/上海譯文出版社/2001-2/18.80元 8.0 (180870人評價) 村上之發(fā)軔万俗,多少人的青春啟蒙 
不能承受的生命之輕 [捷克]米蘭·昆德拉/許鈞/上海譯文出版社/2003-7/23.00元 8.5 (131418人評價) 朝向媚俗的一次偉大的進(jìn)軍 
三體:“地球往事”三部曲之一 劉慈欣/重慶出版社/2008-1/23.00 8.8 (130765人評價) 你我不過都是蟲子 
嫌疑人X的獻(xiàn)身 [日]東野圭吾/劉子倩/南海出版公司/2008-9/28.00 8.9 (126724人評價) 數(shù)學(xué)好是一種極致的浪漫 
紅樓夢 [清]曹雪芹著/人民文學(xué)出版社/1996-12/59.70元 9.5 (115203人評價) 誰解其中味湾笛?

?初學(xué)爬蟲,代碼寫的很粗糙闰歪,很多地方還可以優(yōu)化嚎研,其實一直感覺拿不出手,但是誰沒有開始呢库倘,還請大家多多指教临扮。關(guān)于python的爬蟲網(wǎng)上的教程有很多,這里用到的技術(shù)教翩,我會給出學(xué)習(xí)鏈接杆勇,要比我講的好多了,大家可以去參考學(xué)習(xí)饱亿,爬蟲教程-知乎蚜退。


?這里主要寫一下自己在寫爬蟲的過程中遇到的問題及解決辦法:

?1.網(wǎng)上的教程大多是python2.x,我用的是python3.5python2.x語法和庫上有很多不一樣:比如import urllib2變成了import urllib.request等等此類變化很多彪笼。我覺得新的版本是未來钻注,所以選擇用新的。如果你為了學(xué)起來方便也可以用2.x的版本杰扫,如果想看看這些差別队寇,可以看這篇文章 Python 2.7.x 和 3.x 版本的重要區(qū)別

?2.還有一個是關(guān)于字符集的問題章姓,這應(yīng)該是個很簡單的問題佳遣,我卻花了好久才徹底搞懂,這就是計算機基礎(chǔ)不扎實的后果啊凡伊。首先關(guān)于字符集和字符編碼零渐,可以參考這篇文章:字符集和字符編碼。了解這些之后可以再去了解python里面的encodedecode系忙,可以參考這篇文章:python字符串的encode和decode研究心得诵盼。

?3.是關(guān)于如何應(yīng)對網(wǎng)站的反爬蟲策略,第一次運行代碼,看見書名一行一行的在終端打印出來风宁,高興的不行洁墙。第二次寫好代碼,準(zhǔn)備把書的信息寫入文本的時候戒财,卻發(fā)現(xiàn)打不開網(wǎng)站了热监,手機端,瀏覽器都不行饮寞。提示有異常請求從我的ip發(fā)出孝扛,請登陸后使用。我才意識到ip被封了幽崩,我又去搜索了一下苦始,才知道豆瓣對請求的頻率有限制。像識別User-Agent這種基本的反爬蟲策略慌申,幾乎所有網(wǎng)站都有陌选,頻率限制是一些特別的網(wǎng)站才有。當(dāng)時我真是覺得又激動又覺得很有意思太示,有種偷偷做壞事的感覺毒姨。過了兩天啦扬,我發(fā)現(xiàn),豆瓣又解禁了ip文兢,我這次吸取經(jīng)驗邻吭,每請求一次餐弱,我都讓程序sleep0.5s。這樣它就發(fā)現(xiàn)不了了囱晴,不過速度是真的慢膏蚓。還有一種代價比較高的方法是買很多代理ip,打一槍換一個地方畸写。


寫在最后:

關(guān)于爬蟲要學(xué)習(xí)的還有很多驮瞧,因為畢設(shè)要用到微博數(shù)據(jù),所以要爬去微博數(shù)據(jù)枯芬,下個目標(biāo)就是要能模擬登陸新浪微博论笔。寫代碼真是太有意思了!嘿嘿千所。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狂魔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子淫痰,更是在濱河造成了極大的恐慌最楷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異籽孙,居然都是意外死亡烈评,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門犯建,熙熙樓的掌柜王于貴愁眉苦臉地迎上來础倍,“玉大人,你說我怎么就攤上這事胎挎」灯簦” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵犹菇,是天一觀的道長德迹。 經(jīng)常有香客問我,道長揭芍,這世上最難降的妖魔是什么胳搞? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮称杨,結(jié)果婚禮上肌毅,老公的妹妹穿的比我還像新娘。我一直安慰自己姑原,他們只是感情好悬而,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锭汛,像睡著了一般笨奠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唤殴,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天般婆,我揣著相機與錄音,去河邊找鬼朵逝。 笑死蔚袍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的配名。 我是一名探鬼主播啤咽,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼段誊!你這毒婦竟也來了闰蚕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤连舍,失蹤者是張志新(化名)和其女友劉穎没陡,沒想到半個月后涩哟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡盼玄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年贴彼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片埃儿。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡器仗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出童番,到底是詐尸還是另有隱情精钮,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布剃斧,位于F島的核電站轨香,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幼东。R本人自食惡果不足惜臂容,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望根蟹。 院中可真熱鬧脓杉,春花似錦、人聲如沸简逮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽买决。三九已至沛婴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間督赤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工泻蚊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留躲舌,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓性雄,卻偏偏與公主長得像没卸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秒旋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 可以看我的博客 lmwen.top 或者訂閱我的公眾號 簡介有稍微接觸python的人就會知道约计,python中...
    ayuLiao閱讀 3,115評論 1 5
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,575評論 1 118
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術(shù)知識體系必須貫穿數(shù)據(jù)獲取迁筛、數(shù)據(jù)存儲煤蚌、數(shù)據(jù)提取、數(shù)據(jù)分析、數(shù)據(jù)挖掘尉桩、...
    whenif閱讀 18,072評論 45 523
  • 微風(fēng)不燥筒占,一切都剛剛好
    樓亭小詩閱讀 102評論 0 0
  • 情如初漾|文 我特別喜歡聽歌翰苫,有時候也喜歡自己哼著唱。記得以前上學(xué)時候也教過班里的同學(xué)唱这橙,工作之后也教過學(xué)生唱奏窑。 ...
    情如初漾閱讀 487評論 2 3