最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

BeautifulSoup獲取指定class樣式的div的實(shí)現(xiàn)

 更新時間:2020年12月07日 10:58:33   作者:morein2008  
這篇文章主要介紹了BeautifulSoup獲取指定class樣式的div的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

如何獲取指定的標(biāo)簽的內(nèi)容是解析網(wǎng)頁爬取數(shù)據(jù)的必要手段,比如想獲取<div class='xxx'> ...<div>這樣的div標(biāo)簽,通常有三種辦法,

1)用字符串查找方法,然后切分字符串(或切片操作),如str.index(patternStr)或str.find(patternStr),這種方法快,但步驟多,因?yàn)橐ヮ^去尾。

2)用正則表達(dá)式,比如'<div class="result_info">([\s\S]+?)</div>',通過正則表達(dá)式的括號,可以獲取匹配的內(nèi)容,即<div ..></div>之間的內(nèi)容:

import re

def getTags(html):
 reg = r'<div class="result_info">([\s\S]+?)</div>'
 pattern= re.compile(reg)
 tags= re.findall(pattern, html)
 return tags


不過正則表達(dá)式仍有缺點(diǎn),例如'<div class="result_info">([\s\S]+?)</div>'括號中的問號表示非貪婪匹配,正常情況下可以匹配到所需要的內(nèi)容,但如果class="result_info"的div中還嵌套了子的div,那么正則表達(dá)式的后半部分"</div>"將會匹配子div的結(jié)尾部分</div>,而不是希望的父div.

假如有這樣一個html:

 <div class="result_info">
  <p>some paragraph test 1
  </p>
  <p>some paragraph test 2
  </p>
  <div id="div_sub" class="sub_div_style">
  some contents in sub div
  </div>
  backend content here
 </div>

那么backend contents here這段內(nèi)容將會匹配不到,正則表達(dá)式將會將id為div_sub的</div>作為結(jié)尾。

3)使用第三方庫,比如BeautifulSoup,優(yōu)點(diǎn)是準(zhǔn)確,缺點(diǎn)是速度會比字符串切分、正則表達(dá)式慢,下面說說BeautifulSoup的用法。

按照BeautifulSoup官方文檔的說明怎么都不能成功,后來在百度知道(http://zhidao.baidu.com/question/433247968620775644.html)找到答案,真是扯淡,附上有效代碼:

soup=BeautifulSoup(html)
print soup.find_all(name='div',attrs={"class":"footer"})#按照字典的形式給attrs參數(shù)賦值

完整的:

from bs4 import BeautifulSoup
import urllib2

def getTargetDiv(url,myAttrs):
 html=urllib2.urlopen(url).read()
 soup=BeautifulSoup(html)
 return soup.find_all(name='div',attrs=myAttrs)

if __name__=="__main__":
 url=r'http://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/'
 myAttrs={'class':'footer'}
 print getTargetDiv(url, myAttrs)

按照官方文檔(http://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/)的做法:

#1.soup.find_all("a", class_="sister")
#2.css_soup.find_all("p", class_="body")
#3.soup.find_all(href=re.compile("elsie"))

改成

soup.find_all(name='div',class_=re.compile('info_item'))

或者

soup.find_all('div',class_='info_item')

都沒有匹配結(jié)果,經(jīng)測試需要soup.find_all(name='div',attrs={"class":"footer"})這樣以字典的形式給attrs參數(shù)賦值才可以。

另一個例子,獲取指定樣式的div內(nèi)的所有圖片url,并下載保存:

urls=[]
for img in soup.find('div',attrs={'class':'wrap'}).find_all('img'):#找到class="wrap"的div里面的所有<img>標(biāo)簽
 urls.append(img.attrs['src'])#獲取img標(biāo)簽的src屬性,即圖片網(wǎng)址

i=0
savedir=r'C:\Users\hp\Desktop\Images'#路徑中不能包含中文
for url in urls:
 urllib.urlretrieve(url, '%s\%s.jpg'%(savedir,i))
 i+=1
print 'Done'

更多用法,可參考:http://www.fzitv.net/article/184386.htm

到此這篇關(guān)于BeautifulSoup獲取指定class樣式的div的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)BeautifulSoup獲取class樣式的div內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何獲取文件指定行的內(nèi)容

    Python如何獲取文件指定行的內(nèi)容

    在本篇文章里小編給大家分享的是關(guān)于Python獲取文件指定行的內(nèi)容的方法,有需要的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • 詳解django中視圖函數(shù)的FBV和CBV

    詳解django中視圖函數(shù)的FBV和CBV

    FBV是指視圖函數(shù)以普通函數(shù)的形式,CBV是指視圖函數(shù)以類的方式,這篇文章主要介紹了django中視圖函數(shù)的FBV和CBV,需要的朋友可以參考下
    2022-08-08
  • Pytorch Tensor基本數(shù)學(xué)運(yùn)算詳解

    Pytorch Tensor基本數(shù)學(xué)運(yùn)算詳解

    今天小編就為大家分享一篇Pytorch Tensor基本數(shù)學(xué)運(yùn)算詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python issubclass 和 isinstance函數(shù)

    python issubclass 和 isinstance函數(shù)

    這篇文章主要介紹了python issubclass 和 isinstance函數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • Python tkinter制作單機(jī)五子棋游戲

    Python tkinter制作單機(jī)五子棋游戲

    這篇文章主要介紹了Python tkinter制作單機(jī)五子棋游戲,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Python面向?qū)ο缶幊讨畢^(qū)間的插入詳解

    Python面向?qū)ο缶幊讨畢^(qū)間的插入詳解

    這篇文章主要為大家詳細(xì)介紹了Python面向?qū)ο缶幊虒?shí)例教程中的區(qū)間的插入,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-08-08
  • Python使用Turtle模塊繪制五星紅旗代碼示例

    Python使用Turtle模塊繪制五星紅旗代碼示例

    這篇文章主要介紹了Python使用Turtle模塊繪制五星紅旗代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python+OpenCV實(shí)戰(zhàn)之拖拽虛擬方塊的實(shí)現(xiàn)

    Python+OpenCV實(shí)戰(zhàn)之拖拽虛擬方塊的實(shí)現(xiàn)

    這篇文章主要介紹了如何利用Python+OpenCV實(shí)現(xiàn)拖拽虛擬方塊的效果,即根據(jù)手指坐標(biāo)位置和矩形的坐標(biāo)位置,判斷手指點(diǎn)是否在矩形上,如果在則矩形跟隨手指移動,感興趣的可以了解一下
    2022-08-08
  • python數(shù)據(jù)分析之線性回歸選擇基金

    python數(shù)據(jù)分析之線性回歸選擇基金

    這篇文章主要介紹了python數(shù)據(jù)分析之線性回歸選擇基金,文章基于前幾篇的文章內(nèi)容展開詳細(xì)的基金的趨勢分析,感興趣的小伙伴可以參考一下
    2022-05-05
  • Python selenium自動化測試模型圖解

    Python selenium自動化測試模型圖解

    這篇文章主要介紹了Python selenium自動化測試模型圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論

武邑县| 永宁县| 子洲县| 蚌埠市| 长武县| 澄迈县| 和林格尔县| 蒙阴县| 共和县| 阳城县| 大庆市| 探索| 晋中市| 兴宁市| 洱源县| 博爱县| 邛崃市| 山阳县| 海淀区| 翁牛特旗| 宁海县| 奉化市| 衡水市| 西藏| 涿鹿县| 西和县| 太原市| 保山市| 洛川县| 陆丰市| 惠安县| 比如县| 高青县| 潜江市| 静海县| 黄大仙区| 北碚区| 镶黄旗| 井研县| 涪陵区| 绥中县|