第一個(gè)python爬蟲&編碼格式的理解

這幾天工作不忙,寫一個(gè)爬蟲程序試試介却。起初想爬美團(tuán)的外賣商家數(shù)據(jù)砰识,但是ajax那的_token參數(shù)一時(shí)半會(huì)搞不定能扒,先寫個(gè)簡(jiǎn)單的。對(duì)于我這python新手也是收獲不小辫狼。

先放代碼初斑,是從一個(gè)網(wǎng)站下載小說的程序。

# -*- coding:utf-8 -*-
from urllib import request
from bs4 import BeautifulSoup


def getResponse(url):
    head = {}
    # 寫入U(xiǎn)ser Agent信息
    head[
        'User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36'

    url_request = request.Request(url, headers=head)
    url_response = request.urlopen(url_request)
    //response的header表明內(nèi)容'utf-8'的膨处,header信息在后面
    return url_response.read().decode('utf-8')


# 筆趣閣??貌似也是冒牌的~
url = 'https://www.qu.la/book/61600/'
response = getResponse(url)
# print(response)
soup = BeautifulSoup(response, 'lxml')
p = soup.find('dt', text='《太初》正文卷')
print(p)
chapter = p.find_next('dd')
# for chapter in chapters:
print(chapter.a['href'])
print(chapter.a.text)

url = "https://www.qu.la" + chapter.a['href']
print('url is ' + url)
response = getResponse(url)
soup = BeautifulSoup(response, 'lxml')
content = soup.find('div', id="content")

strs = content.text.split("\n")
print('!' * 50)
with open('test.txt', 'w', encoding='gbk', errors='ignore') as f:
    for str_ in strs:
        str_ = str_.strip()
        if (str_ == '' or str_ == '\n'):
            continue
        print(type(str_))
        f.write(str_)
        print('*' * 50)

其中的知識(shí)點(diǎn)主要是BeautifulSoup的使用见秤,以及編碼格式的問題。BeautifulSoup的使用網(wǎng)上的例子很多真椿,不再贅述鹃答,主要談一下編碼格式的問題吧。

看了很多python編碼格式的文章突硝,但是和自己以前的理解有些不同测摔,這里談一下自己的理解。

我認(rèn)為編碼格式是針對(duì)二進(jìn)制的bytes數(shù)組的解恰,而不是針對(duì)str的锋八。在系統(tǒng)內(nèi)部,數(shù)據(jù)是以Unicode格式的二進(jìn)制存在的护盈,我們看到的str是這些二進(jìn)制表達(dá)的意思挟纱。這些str要落地(如存磁盤,網(wǎng)絡(luò)傳輸腐宋,控制臺(tái)打印等)時(shí)紊服,這是輸出,需要轉(zhuǎn)換為二進(jìn)制然后存儲(chǔ)/傳輸胸竞,這里需要做的是encode欺嗤。而作輸入時(shí),是二進(jìn)制轉(zhuǎn)化為為str撤师,這里做的是decode剂府。因此可以說二進(jìn)制流是哪種編碼方式的,而不是str剃盾。而且一種編碼方式二進(jìn)制流不能直接變?yōu)榱硪环N編碼方式的二進(jìn)制流腺占,需要先變?yōu)閟tr

在本段代碼中,爬到的內(nèi)容是UTF-8格式的痒谴,因此作了一次decode衰伯,存儲(chǔ)時(shí)放到了gbk的文件,作了一次encode积蔚。

Date: Fri, 03 Aug 2018 02:04:49 GMT
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Content-Length: 145886
Age: 149
X-Via: 1.1 zhjhzhdx19:1 (Cdn Cache Server V2.0), 1.1 PSmgnyNY2li89:0 (Cdn Cache Server V2.0)
Connection: close
X-Dscp-Value: 0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末意鲸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌怎顾,老刑警劉巖读慎,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異槐雾,居然都是意外死亡夭委,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門募强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來株灸,“玉大人,你說我怎么就攤上這事擎值』派眨” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵鸠儿,是天一觀的道長(zhǎng)屹蚊。 經(jīng)常有香客問我,道長(zhǎng)捆交,這世上最難降的妖魔是什么淑翼? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮品追,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冯丙。我一直安慰自己肉瓦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布胃惜。 她就那樣靜靜地躺著泞莉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪船殉。 梳的紋絲不亂的頭發(fā)上鲫趁,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音利虫,去河邊找鬼挨厚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糠惫,可吹牛的內(nèi)容都是我干的疫剃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼硼讽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼巢价!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤壤躲,失蹤者是張志新(化名)和其女友劉穎城菊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碉克,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡役电,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棉胀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片法瑟。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖唁奢,靈堂內(nèi)的尸體忽然破棺而出霎挟,到底是詐尸還是另有隱情,我是刑警寧澤麻掸,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布酥夭,位于F島的核電站,受9級(jí)特大地震影響脊奋,放射性物質(zhì)發(fā)生泄漏熬北。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一诚隙、第九天 我趴在偏房一處隱蔽的房頂上張望讶隐。 院中可真熱鬧,春花似錦久又、人聲如沸巫延。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炉峰。三九已至,卻和暖如春脉执,著一層夾襖步出監(jiān)牢的瞬間疼阔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工半夷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留婆廊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓玻熙,卻偏偏與公主長(zhǎng)得像否彩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗦随,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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