<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python爬蟲系列(一)入門教學(xué)

          共 3553字,需瀏覽 8分鐘

           ·

          2020-02-06 23:21

          ? ?大家好,我是新來的小編小周。今天給大家?guī)淼氖莗ython爬蟲入門,文章以簡為要,引導(dǎo)初學(xué)者快速上手爬蟲。話不多說,我們開始今天的內(nèi)容。
          在初步學(xué)習(xí)爬蟲之前,我們先用一個例子來看看爬蟲是什么。
          ece04c0f4efc7b62d2b7cefaf3ea4bbe.webp
          A同學(xué)想要了解python是一種怎樣的語言,于是打開了某度搜索引擎,卻發(fā)現(xiàn)占據(jù)屏幕的是各類python學(xué)習(xí)課程的廣告,而真正介紹python的內(nèi)容卻被放在了后面。
          事實上,在大多數(shù)時候,我們用瀏覽器獲得的信息是十分繁冗的,因此篩選提取網(wǎng)頁中對我們有用的數(shù)據(jù)就顯得十分必要了。
          我們的爬蟲程序要做的便是:模擬瀏覽器發(fā)送請求-->獲取網(wǎng)頁代碼-->篩選提取數(shù)據(jù)-->存放數(shù)據(jù)efa5df6be17d7f63d7222b7876332c80.webp
          ~前期準(zhǔn)備~
          爬蟲程序中需要用到一些第三方庫,我們這里使用的是requests庫和BeautifulSoup4庫。話不多說,讓我們先來做好這些準(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(可提供對第三方庫的下載安裝等),故第三方庫下載后可直接進行安裝。
          1. 打開cmd

          6c9dfa8a523038e440ca106f1db59c38.webp


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

          80ccf8aa02a7975c987607309d215c18.webp


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

          fe03eb1159d8f665a14ffb3b806fd577.webp


          BeautifulSoup4庫安裝步驟相同)


          ~發(fā)送請求~


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

          發(fā)送請求后,服務(wù)器會接受請求,并返回一個response。
          9382632deaebd759a200f3e47c9be90f.webp
          response作為一個對象,具有如下常用屬性:
          r.status_codeHTTP請求的返回狀態(tài),200表示連接成功,404表示失敗
          r.textHTTP響應(yīng)內(nèi)容(字符串形式)
          r.contentHTTP響應(yīng)內(nè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請求時會識別請求頭,并攔截python爬蟲。
          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'}

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

          可見,修改請求頭后訪問成功。
          利用requests的get方法和response的content屬性(圖片以二進制形式保存),我們可以下載網(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庫是解析、遍歷、維護文檔樹的功能庫。
          簡單地說,BeautifulSoup能夠幫助用戶將response中的html內(nèi)容解析,得到一個BeautifulSoup的對象,并且能夠以標(biāo)準(zhǔn)的縮進格式輸出。我們以知乎熱榜網(wǎng)頁為例(注意B和S要大寫哦):
          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)

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

          ...

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

          在代碼運行返回的html內(nèi)容中,可以看見a標(biāo)簽里包含了
          等子孫標(biāo)簽,其中包含了我們需要的熱榜話題,利用這段代碼我們可以獲取熱榜第一的信息進而獲取榜單全部話題。
          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ù),返回一個包含許多元素的列表,然后利用text屬性提取有用的字符逐個輸出。
          b163a042034f2a374aff2e981ab2ffb8.webp?今天的爬蟲入門我們就先講到這里哦,小周下期繼續(xù)給大家?guī)砼老x分享哦!
          最后,祝大家新年快樂,身體健康。
          215e2c53893b90cc0e0f92b82739fb40.webp


          瀏覽 79
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色极品影院 | 91成人久久| 欧美成人精品一区 | 亚洲中文字幕在线观看视频了 | 黄色视频网站在线观看 |