日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python網絡爬蟲——bs4基本用法

系統 2117 0

使用流程:

  -導包:from bs4 import BeautifulSoup

  - 使用方式:可以將一個html文檔,轉化為BeautifulSoup對象,然后通過對象的方法或屬性去查找指定的節點內容。

    (1)轉化本地文件:

      - soup = BeautifulSoup(open(‘本地文件’),‘lxml’)

    (2)轉化網絡文件(與requests配合):

      - page_text = requests.get(url=url,headers=headers).text

      -?soup = BeautifulSoup(page_text,'lxml')

    (3)打印soup對象顯示內容為html文件中的內容

基礎語法:

?  (1)根據標簽名查找

    - soup.a  只能找到第一個符合要求的標簽

  (2)獲取屬性

    - soup.a.atters  獲取a所有的屬性和屬性值,返回一個字典

    - soup.a.atters['href']  獲取href屬性

    - soup.a['href']  上面的簡寫

  (3)***獲取內容

    - soup.a.string  獲取 之間的文本內容(a不含子標簽)

      - soup.a['href'].string  獲取a標簽中href的內容

    - soup.a.text   獲取 之間包括子標簽的所有文本內容

    - soup.a.get_text()  同上面用法

    【注意】如果標簽里還有標簽,那么string獲取到的結果為None,其他兩個可以獲取文本內容

  (4)***find:找到第一個符合要求的標簽

    - soup.find('a')  找到第一個符合要求的標簽(a標簽)

    - soup.find('a',title='xxx')?  找到第一個title=‘xxx’的a標簽

    - soup.find('a',alt='xxx')  同上

    - soup.find('a',class_='xxx')  同上,【注意】class后的_

    - soup.find('a',id='xxx')  同上

  (5)***find_all:找到所有符合要求的標簽

    - soup.find_all('a')  找到所有a標簽

    - soup.find(['a','b'])  找到所有a和b標簽

    - soup.find_all('a',limit=2)  限制前兩個

  (6)***根據選擇器選擇指定的內容

      select:soup.select('.feng')  選擇class屬性值為feng的所有標簽

    - 常見的選擇器:標簽選擇器(a)、類型選擇器(.)、id選擇器(#)、層級選擇器

      - 層級選擇器:

        div > p > a > .lala  只能選擇最下面一級 class=lala的子標簽

        div .dudu  div下面clas=dudu的所有字標簽

    【注意】?select選擇器返回永遠是列表,需要通過下表提取指定的對象

實例:使用bs4實現將詩詞名句網站中三國演義小說的每一章的內同爬取到本地磁盤進行存儲

            
              import
            
            
               requests

            
            
              from
            
             bs4 
            
              import
            
            
               BeautifulSoup

              
#獲得url url
= ' http://www.shicimingju.com/book/sanguoyanyi.html ' headers = { ' User-Agent ' : '' }

#獲取網頁并轉換成BeautifulSoup對象 page_text
= requests.get(url=url,headers= headers).text soup = BeautifulSoup(page_text, ' lxml ' )

#選取class=book-mulu的div標簽 >下的ul標簽 >下的li標簽 >下的所有a標簽 a_list
= soup.select( ' .book-mulu>ul>li>a ' )

#創建sanguo.txt文件 fp
= open( ' sanguo.txt ' , ' w ' ,encoding= ' utf-8 ' )

#遍歷所有a標簽
for a in a_list:
  #獲取a標簽文本 title
= a.string
  #獲取a標簽中href屬性的文本信息,并組成url detail_url
= ' http://www.shicimingju.com ' + a[ ' href ' ]
  #獲取新url內的頁面信息 detail_page_text
= requests.get(url=detail_url,headers= headers).text #將新url網頁創建為BeautifulSoup對象 title_soup = BeautifulSoup(detail_page_text, ' lxml ' )
  #獲取新url內class='chapter_content'的div標簽的文本信息 content
= title_soup.find( ' div ' ,class_= ' chapter_content ' ).text
  #將標題與正文間加入\n并寫入sanguo.txt文件 fp.write(title
+ ' \n ' + content)
  #每一章節下載完畢都打印成功
print (title, ' 下載完畢 ' ) print ( ' over ' ) fp.close()

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 拜城县| 水富县| 隆回县| 永年县| 公主岭市| 都兰县| 昌图县| 什邡市| 洛扎县| 仁怀市| 纳雍县| 华安县| 乾安县| 杭锦后旗| 松桃| 都匀市| 闵行区| 土默特左旗| 廉江市| 乡宁县| 株洲市| 胶南市| 房山区| 石台县| 博湖县| 额济纳旗| 镇平县| 昌都县| 朝阳市| 兴化市| 凤阳县| 鹤庆县| 南开区| 伊吾县| 定西市| 隆林| 扎囊县| 罗甸县| 徐州市| 兰考县| 通河县|