<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爬蟲,爬取博客園文章列表

          共 1829字,需瀏覽 4分鐘

           ·

          2021-12-11 12:50

          前言

          本次的案例源自于螞蟻老師的爬蟲課程。但由于博客園網(wǎng)站作了升級,所以螞蟻老師的示例代碼失效了,我根據(jù)螞蟻老師教授的知識結(jié)合網(wǎng)上搜索來的資料,重新編寫了一份代碼,復(fù)現(xiàn)了螞蟻老師在課程中的演示效果。

          需求

          下面我們來明確一下需求 爬取博客園前20頁的文章標題、對應(yīng)的文章鏈接以及對應(yīng)的點贊數(shù) 如圖所示 網(wǎng)站分頁設(shè)置

          查看網(wǎng)站的html代碼

          整體分析

          通過瀏覽器內(nèi)置的查看網(wǎng)絡(luò)部分,我們發(fā)現(xiàn)了點擊分頁時,實際請求的url并不是瀏覽器輸入框中的信息,而是:https://www.cnblogs.com/AggSite/AggSitePostList

          找到對應(yīng)的請求部分 可以發(fā)現(xiàn),對應(yīng)的content-type信息,以及user-agent信息 我們將這倆信息對應(yīng)放到代碼的header部分,作為一個請求頭附入request里面,模擬瀏覽器,防止網(wǎng)站的反爬蟲措施干擾。另外,為了將爬蟲偽裝得更加像是一個瀏覽器,可以將請求負載也加到request中

          局部分析

          下面我們來找具體的信息藏在哪里 鼠標右鍵對應(yīng)的內(nèi)容,查看html代碼,就可以發(fā)現(xiàn)如下內(nèi)容

          文章標題和url鏈接 點贊數(shù)

          現(xiàn)在我們就可以根據(jù)前面的分析寫代碼了

          代碼編寫

          為了演示,我的代碼只爬取了前3頁的內(nèi)容,如果你想要爬200頁,可自行修改代碼

          """
          爬取前20頁的文章標題、鏈接、點贊數(shù)
          "
          ""
          import?requests
          from?bs4?import?BeautifulSoup
          import?re
          import?json

          for?idx?in?range(1,?3):
          ?print("#"?*?30,?idx)
          ?url?=?"https://www.cnblogs.com/AggSite/AggSitePostList"

          ?headers?=?{"content-type":?"application/json",?"user-agent":"Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/95.0.4638.54?Safari/537.36?Edg/95.0.1020.30"}

          ?request_payload?=?{"CategoryType":?"SiteHome",?"ParentCategoryId":?0,?"CategoryId":?808,?"PageIndex":?idx,?"TotalPostCount":?4000,?"ItemListActionName":?"AggSitePostList"}

          ?r?=?requests.post(url,?data=json.dumps(request_payload),?headers=headers)
          ?if?r.status_code?!=?200:
          ??print(r.status_code)
          ??raise?Exception()
          ?soup?=?BeautifulSoup(r.text,?"html.parser")
          ?section_list?=?soup.find_all("section",?class_="post-item-body")
          ?for?section?in?section_list:
          ??a_tag?=?section.find("a",?class_="post-item-title")
          ??passage_link?=?a_tag.get("href")
          ??passage_name?=?a_tag.get_text()

          ??span_tag?=?section.find("span",?id=re.compile(r"^digg"))
          ??numbers?=?span_tag.get_text()

          ??print(passage_link,?passage_name,?numbers)

          運行結(jié)果


          最后,推薦下螞蟻老師的《零基礎(chǔ)學(xué)Python?到數(shù)據(jù)分析實戰(zhàn)課程》


          如果購買課程,加螞蟻老師微信ant_learn_python,有答疑服務(wù),也會進接單群
          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  a性毛片 人人看人人摸 | 日韩黄片视频 | 国产精品少大保健 | 成人伊人综合 | 久久久久亚洲AV无码麻豆 |