黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python網(wǎng)絡(luò)爬蟲(chóng)——bs4基本用法

系統(tǒng) 2384 0

使用流程:

  -導(dǎo)包:from bs4 import BeautifulSoup

  - 使用方式:可以將一個(gè)html文檔,轉(zhuǎn)化為BeautifulSoup對(duì)象,然后通過(guò)對(duì)象的方法或?qū)傩匀ゲ檎抑付ǖ墓?jié)點(diǎn)內(nèi)容。

    (1)轉(zhuǎn)化本地文件:

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

    (2)轉(zhuǎn)化網(wǎng)絡(luò)文件(與requests配合):

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

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

    (3)打印soup對(duì)象顯示內(nèi)容為html文件中的內(nèi)容

基礎(chǔ)語(yǔ)法:

?  (1)根據(jù)標(biāo)簽名查找

    - soup.a  只能找到第一個(gè)符合要求的標(biāo)簽

  (2)獲取屬性

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

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

    - soup.a['href']  上面的簡(jiǎn)寫(xiě)

  (3)***獲取內(nèi)容

    - soup.a.string  獲取 之間的文本內(nèi)容(a不含子標(biāo)簽)

      - soup.a['href'].string  獲取a標(biāo)簽中href的內(nèi)容

    - soup.a.text   獲取 之間包括子標(biāo)簽的所有文本內(nèi)容

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

    【注意】如果標(biāo)簽里還有標(biāo)簽,那么string獲取到的結(jié)果為None,其他兩個(gè)可以獲取文本內(nèi)容

  (4)***find:找到第一個(gè)符合要求的標(biāo)簽

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

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

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

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

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

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

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

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

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

  (6)***根據(jù)選擇器選擇指定的內(nèi)容

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

    - 常見(jiàn)的選擇器:標(biāo)簽選擇器(a)、類(lèi)型選擇器(.)、id選擇器(#)、層級(jí)選擇器

      - 層級(jí)選擇器:

        div > p > a > .lala  只能選擇最下面一級(jí) class=lala的子標(biāo)簽

        div .dudu  div下面clas=dudu的所有字標(biāo)簽

    【注意】?select選擇器返回永遠(yuǎn)是列表,需要通過(guò)下表提取指定的對(duì)象

實(shí)例:使用bs4實(shí)現(xiàn)將詩(shī)詞名句網(wǎng)站中三國(guó)演義小說(shuō)的每一章的內(nèi)同爬取到本地磁盤(pán)進(jìn)行存儲(chǔ)

            
              import
            
            
               requests

            
            
              from
            
             bs4 
            
              import
            
            
               BeautifulSoup

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

#獲取網(wǎng)頁(yè)并轉(zhuǎn)換成BeautifulSoup對(duì)象 page_text
= requests.get(url=url,headers= headers).text soup = BeautifulSoup(page_text, ' lxml ' )

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

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

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

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論