1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Python爬蟲(chóng)系列(一)入門(mén)教學(xué)

        共 3553字,需瀏覽 8分鐘

         ·

        2020-02-06 23:21

        ? ?大家好,我是新來(lái)的小編小周。今天給大家?guī)?lái)的是python爬蟲(chóng)入門(mén),文章以簡(jiǎn)為要,引導(dǎo)初學(xué)者快速上手爬蟲(chóng)。話不多說(shuō),我們開(kāi)始今天的內(nèi)容
        在初步學(xué)習(xí)爬蟲(chóng)之前,我們先用一個(gè)例子來(lái)看看爬蟲(chóng)是什么。
        ece04c0f4efc7b62d2b7cefaf3ea4bbe.webp
        A同學(xué)想要了解python是一種怎樣的語(yǔ)言,于是打開(kāi)了某度搜索引擎,卻發(fā)現(xiàn)占據(jù)屏幕的是各類python學(xué)習(xí)課程的廣告,而真正介紹python的內(nèi)容卻被放在了后面。
        事實(shí)上,在大多數(shù)時(shí)候,我們用瀏覽器獲得的信息是十分繁冗的,因此篩選提取網(wǎng)頁(yè)中對(duì)我們有用的數(shù)據(jù)就顯得十分必要了。
        我們的爬蟲(chóng)程序要做的便是:模擬瀏覽器發(fā)送請(qǐng)求-->獲取網(wǎng)頁(yè)代碼-->篩選提取數(shù)據(jù)-->存放數(shù)據(jù)。efa5df6be17d7f63d7222b7876332c80.webp
        ~前期準(zhǔn)備~
        爬蟲(chóng)程序中需要用到一些第三方庫(kù),我們這里使用的是requests庫(kù)和BeautifulSoup4庫(kù)。話不多說(shuō),讓我們先來(lái)做好這些準(zhǔn)備。(筆者使用的是IDLE3.8版本編輯器,及win系統(tǒng)

        requests 2.22.0下載地址:https://pypi.org/project/requests/#files?
        BeautifulSoup4 4.8.2下載地址:https://pypi.org/project/beautifulsoup4/#files

        python3.0以上版本一般自帶pip(可提供對(duì)第三方庫(kù)的下載安裝等),故第三方庫(kù)下載后可直接進(jìn)行安裝。
        1. 打開(kāi)cmd

        6c9dfa8a523038e440ca106f1db59c38.webp


        2. 若python安裝在啟動(dòng)盤(pán)(一般是C盤(pán))直接鍵入“pip install? ?requests”命令即可。

        80ccf8aa02a7975c987607309d215c18.webp


        3. 若python不在啟動(dòng)盤(pán)則鍵入“d:”然后“cd python.exe所在目錄”,直接鍵入?”python -m pip install requests”命令即可。

        fe03eb1159d8f665a14ffb3b806fd577.webp


        BeautifulSoup4庫(kù)安裝步驟相同)


        ~發(fā)送請(qǐng)求~


        模擬瀏覽器發(fā)送請(qǐng)求時(shí),我們可以使用requests庫(kù)幫助我們。下面給出requests庫(kù)的7個(gè)主要方法:
        requests.request()構(gòu)造一個(gè)請(qǐng)求,支撐以下各方法的基礎(chǔ)方法
        requests.get()獲取HTML網(wǎng)頁(yè)的主要方法,對(duì)應(yīng)HTTP的GET
        requests.head()獲取HTML網(wǎng)頁(yè)頭信息的方法,對(duì)應(yīng)HTTP的HEAD
        requests.post()向HTML網(wǎng)頁(yè)提交POST請(qǐng)求方法,對(duì)應(yīng)HTTP的POST
        requests.put()向HTML網(wǎng)頁(yè)提交PUT請(qǐng)求的方法,對(duì)應(yīng)HTTP的RUT
        requests.patch()向HTML網(wǎng)頁(yè)提交局部修改請(qǐng)求,對(duì)應(yīng)于HTTP的PATCH
        requests.delete()向HTML頁(yè)面提交刪除請(qǐng)求,對(duì)應(yīng)HTTP的DELETE

        發(fā)送請(qǐng)求后,服務(wù)器會(huì)接受請(qǐng)求,并返回一個(gè)response。
        9382632deaebd759a200f3e47c9be90f.webp
        response作為一個(gè)對(duì)象,具有如下常用屬性:
        r.status_codeHTTP請(qǐng)求的返回狀態(tài),200表示連接成功,404表示失敗
        r.textHTTP響應(yīng)內(nèi)容(字符串形式)
        r.contentHTTP響應(yīng)內(nèi)容(二進(jìn)制形式)

        接下來(lái),我們以訪問(wèn)百度主頁(yè)的代碼為例來(lái)看看吧!

        import requestsurl="http://www.baidu.com/"res=requests.get(url)print(res.status_code)200

        其中,我們介紹一下requests.get()函數(shù)的帶參數(shù)形式。params是字典或字節(jié)序列,可以添加到url中;headers是HTTP的定制頭等等。我們以headers為例,headers是HTTP的定制頭,一些服務(wù)器在處理requests請(qǐng)求時(shí)會(huì)識(shí)別請(qǐng)求頭,并攔截python爬蟲(chóng)。
        import requestsurl="http://www.zhihu.com/"res=requests.get(url)print(res.status_code)400print(res.request.headers){'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

        可以看到我們通過(guò)python訪問(wèn)知乎首頁(yè)被攔截了,查看請(qǐng)求頭時(shí)發(fā)現(xiàn)User-agent是python—-requests/2.22.0。下面我們嘗試修改請(qǐng)求頭偽裝成瀏覽器:
        ea6506c784c75da7b4a124b9da389c35.webp
        import?requestspre={'User-agent':'Mozilla/5.0'}res=requests.get("https://www.zhihu.com/billboard",headers=pre)print(res.status_code)200

        可見(jiàn),修改請(qǐng)求頭后訪問(wèn)成功。
        利用requests的get方法和response的content屬性(圖片以二進(jìn)制形式保存),我們可以下載網(wǎng)絡(luò)上的一些圖片,下面以獲取新浪新聞的一張圖片為例:
        import?requestsurl="http://www.sinaimg.cn/dy/slidenews/5_img/2015_48/30939_1300019_688168.jpg"path="D://pics//"+"maomi.jpg"try:        res=requests.get(url)        with open(path,'wb') as pic:                pic.write(res.content)                pic.close()                print("文件保存成功")except:        print("爬取失敗")文件保存成功



        ~解析內(nèi)容~

        Beautiful ?Soup庫(kù)是解析、遍歷、維護(hù)文檔樹(shù)的功能庫(kù)。
        簡(jiǎn)單地說(shuō),BeautifulSoup能夠幫助用戶將response中的html內(nèi)容解析,得到一個(gè)BeautifulSoup的對(duì)象,并且能夠以標(biāo)準(zhǔn)的縮進(jìn)格式輸出。我們以知乎熱榜網(wǎng)頁(yè)為例(注意B和S要大寫(xiě)哦):
        import requestsfrom bs4 import BeautifulSouppre={'User-agent':'Mozilla/5.0'}res=requests.get("https://www.zhihu.com/billboard",headers=pre)rep=res.textsoup=BeautifulSoup(rep,"html.parser")print(soup)

        ?運(yùn)行代碼后可以看見(jiàn),已經(jīng)產(chǎn)生標(biāo)準(zhǔn)縮進(jìn)格式輸出。(截取部分如下圖)
        4f1cadf86cecf8bdd55411848ddc37aa.webp?這里,我們來(lái)認(rèn)識(shí)一下BeautifulSoup類的部分元素:
        Tag
        標(biāo)簽,最基本的信息組織單元,分別用<>和標(biāo)明開(kāi)頭和結(jié)尾
        Name標(biāo)簽的名字,

        ...

        的名字是’p’,格式:?.?name
        Attributes
        標(biāo)簽的屬性,字典形式組織,格式:?.?attrs
        NavigableString標(biāo)簽內(nèi)非屬性字符串,<>...中字符串,格式:?.string

        在代碼運(yùn)行返回的html內(nèi)容中,可以看見(jiàn)a標(biāo)簽里包含了
        等子孫標(biāo)簽,其中包含了我們需要的熱榜話題,利用這段代碼我們可以獲取熱榜第一的信息進(jìn)而獲取榜單全部話題。
        import requestsfrom bs4 import BeautifulSouppre={'User-agent':'Mozilla/5.0'}try:    res=requests.get("https://www.zhihu.com/billboard",headers=pre)    res.raise_for_status    rep=res.textexcept:    print("連接失敗")try:    soup=BeautifulSoup(rep,"html.parser")    con=soup.find_all('div',class_="HotList-itemTitle")    for i in range(len(con)):        print(con[i].text)except:????print("獲取失敗")

        我們觀察到所有熱榜話題所在標(biāo)簽name都是div,屬性中都包含class="HotList- itemTitle"。我們使用bs4的find_all函數(shù),返回一個(gè)包含許多元素的列表,然后利用text屬性提取有用的字符逐個(gè)輸出。
        b163a042034f2a374aff2e981ab2ffb8.webp?今天的爬蟲(chóng)入門(mén)我們就先講到這里哦,小周下期繼續(xù)給大家?guī)?lái)爬蟲(chóng)分享哦!
        最后,祝大家新年快樂(lè),身體健康。
        215e2c53893b90cc0e0f92b82739fb40.webp


        瀏覽 79
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产精品无码卡一卡二 | av成人小说观看网站 | 天天色天天日天天操 | 国产一级毛片国产一级AV国语 | www.久爱 | 无码中文字幕在线视频播放 | 亚洲第一黄色网址 | 上瘾16分钟大尺度的片段 | 黄网在现观看 | 欧美性爰小说 |