Python之BeautifulSoup常用詳細使用

來源:互聯網
上載者:User

標籤:style   blog   color   使用   io   ar   div   html   

因工作需要,日常工作中有不少時間是用在了反覆登陸內網。

故詳細研究測試了BeautifulSoup的用法,總結下來備用耙梳頁之需。

首先是匯入模組並初始化了:

 
from bs4 import BeautifulSoupsoup=BeautifulSoup(opener)

#1、tag標籤法
如果一層層的標籤包下去,只取每層標籤第一個,或只有唯一一個時,可以用

soup.head.title


但並行多個同名標籤的則不能title[2]之類尋找

#2、contents法
根據文檔樹進行搜尋,返回標記對象(tag)的列表,注意,直接.contents,返回的是列表,不是單一元素
使用contents向後遍曆樹,使用parent向前遍曆樹

共兩種用法:

soup.contentssoup.contents[x].contents


傳回值是包含html標籤全部內容的列表。比如可能是三元素:[u‘\n‘,‘<html>xxxx</html>‘,u‘\n‘]
soup.contents[x]則是對列表各元素值的擷取了

soup.contents[x].contents


傳回值是目標標籤的下一層(即為該標籤為父,則抓取到的都是子的列表)全部標籤的列表。這裡如果x取錯,可能會導致
錯誤,因為取錯則生不成列表,後面contents會彈錯。

1 soup.contents[1]=u‘HTML‘

2 soup.contents[2]=u‘\n‘

3 soup.contents[3]=<html>...</html> 

soup.contents[3].contents=[u‘\n‘,<head>...</head>,u‘\n‘,<body>...</body>,u‘\n‘]


以此類推,soup.contents[3].contents[3]=肯定是上述列表中的第四個元素body。

#3、.next法
只能針對單一元素進行.next,或者說是對contents列表元素的挨個清點。
比如

soup.contents[1]=u‘HTML‘soup.contents[2]=u‘\n‘

則soup.contents[1].next等價於soup.contents[2]

#搜尋法

find(name=None, attrs={}, recursive=True, text=None, **kwargs)

主要2個:.find(‘p‘),.findAll(‘p‘)
find返回的是字串值,而且是返回從頭尋找到的第一個tag對。但是如果這第一個tag對包括大量的內容,父等級很高,則同時其內部所包含的

此級標籤也全部都find

findAll傳回值是個列表,如果發現了一個同名標籤內含多個同名標籤,則內部的標籤一併歸於該父標籤顯示,列表其他元素也不再體現那些內含

的同名子標籤。
比如:

soup.findAll(onclick=‘document.location...‘)    soup.findAll(attrs={‘style‘:r‘outline:none;‘}) #用來尋找屬性中有style=‘outline:none;的標籤體。


#4、.attrs[x]擷取屬性值法
在上述各種方法找到唯一的標籤體之後,可以通過對標籤實施attrs,得到一個內部屬性的列表。
在標籤後面新增.attrs[‘id‘]等等即可取得該標籤內部id的屬性值
比如:

soup.contents[3]==<meta abc=‘god‘ href=‘/‘>soup.contents[3].attrs=={‘abc‘:‘god‘,‘href‘:‘/‘}soup.contents[3].attrs[1]=‘/‘

 



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.