乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      三個步驟就能讓你輕松掌握Python爬蟲

       新進(jìn)小設(shè)計 2020-05-31

       

      前言

      文的文字及圖片來源于網(wǎng)絡(luò),僅供學(xué)習(xí)、交流使用,不具有任何商業(yè)用途,版權(quán)歸原作者所有,如有問題請及時聯(lián)系我們以作處理。

      作者:NicePython

      PS:如有需要Python學(xué)習(xí)資料的小伙伴可以加點擊下方鏈接自行獲取http:///A6Zvjdun

      運行環(huán)境

      • python3.7
      • Windows
      • vscode

      運行依賴包

      • requests ( pip install requests 即可安裝)
      • re

      爬蟲可以簡單的分為:

      • 獲取數(shù)據(jù)
      • 分析數(shù)據(jù)
      • 存儲數(shù)據(jù)

      下載數(shù)據(jù)

      簡單來說一個網(wǎng)頁是由一個html文件解析構(gòu)成,我們需要獲取這個文本內(nèi)容。

      每個瀏覽器都可以通過開發(fā)者工具獲取到文本內(nèi)容,以chrome為例,打開網(wǎng)頁后,右鍵->檢查。

      右邊的 Elements 就是我們要下載的數(shù)據(jù)。

      讓我們看看 requests 是如何獲取這個數(shù)據(jù)的。

       

      url='http:///';
      html=requests.get(url);
      if html.status_code == 200:
          html_bytes=html.content;
          html_str=html_bytes.decode();

      上面的 html_str 就是我們需要的源數(shù)據(jù)。獲取數(shù)據(jù)我們需要一個網(wǎng)頁地址,獲取后判斷狀態(tài)碼是否為200,最后再將內(nèi)容decode就得到需要的整個html源數(shù)據(jù)。

       

      分析數(shù)據(jù)

      這次我們用正則表達(dá)式去解析源數(shù)據(jù),截取到我們需要。關(guān)于詳細(xì)的正則知識可以在這篇文章史上最全面的正則表達(dá)式教程中學(xué)習(xí)。

      現(xiàn)在我們的目標(biāo)是抓取博客的文章標(biāo)題和鏈接,我們可以通過剛才的開發(fā)者工具獲取文章標(biāo)題和鏈接的特征。

      可以看到我們要的內(nèi)容都具有以下這種格式。

      <a href="鏈接">
              <h2 class="post-title">
                  標(biāo)題
              </h2>
              xxxxxx
          </a>

      我們就為這種格式寫出正則表達(dá)式。(ps: 我也寫了幾次才寫對,看不懂的話我們私下交流交流

      )

      regex = r"<a href=\"(.*)\">[\s]*?<h2 class=\"post-title\">[\s]*(.*)[\s]*</h2>[\s\S]*?</a>"

      使用正則表達(dá)式中的 findall 把所有內(nèi)容找出來,并保存在字符串中。

      write_content = ''
      all_items = re.findall(regex,html_str);
      for item in all_items:
        write_content=f'{write_content}\n{item[1]}\nhttp://{item[0]}\n'

      但是,我們只爬了其中的一頁。還有許多頁沒有爬呢!(ps: 驕傲臉,我已經(jīng)寫了好多??頁的原創(chuàng)內(nèi)容了。)

      我們可以點幾個下一頁,很容易發(fā)現(xiàn)其中的規(guī)律。

      - 第一頁:http:///

      - 第二頁:http:///page2/

      - 第三頁:http:///page3/

      ...

      為此,我們加個循環(huán)判斷就可以啦。

      index=1
      while True:
        page_url = '';
        if index>1:
          page_url=f'page{index}/'
        url=f'http:///{page_url}';
        html=requests.get(url);
        if html.status_code != 200:
          print(html);
          break;

      在判斷狀態(tài)碼為200時,退出循環(huán)。

       

      存儲數(shù)據(jù)

      這次我們就用文本存儲來結(jié)束我們的教程吧。

      with open('lamyoung_title_out.txt','w',encoding='utf-8') as f:
        f.write(write_content)

      最后看下輸出結(jié)果吧~

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多