爬蟲 find all 和find 方法

2021-10-06 11:45:31 字數 3300 閱讀 3517

find_all()⽅法以列表形式返回所有的搜尋到的標籤資料。

find()⽅法返回搜尋到的第⼀條資料

find_all(self, name=none, attrs={}, recursive=true, text=none,

limit=none, **kwargs)

name : tag 名稱

attrs :標籤的屬性

recursive : 是否遞迴

text : 文字內容

limit : 限制返回的條數

**kwargs :不定長引數 以關鍵字來傳參

from bs4 import beautifulsoup

html_doc =

"""the dormouse's story

once upon a time there were three little sisters; and their names were

elsie,

lacie and

tillie;

and they lived at the bottom of a well.

..."""

soup=beautifulsoup(html_doc,

'lxml'

)a_tags=soup.find_all(

'a')

print

(a_tags)

p_tags=soup.find_all(

'p',

'title'

)print

(p_tags)

print

(soup.find_all(id=

'link1'))

print

(soup.find_all(

'a',limit=3)

)print

(soup.a)

print

(soup.find(

'a')

)print

(soup.find_all(

'a',recursive=

true))

#print(soup.find_all('a',limit=1))[0]

find_parents() 搜尋所有⽗親

find_parrent() 搜尋單個⽗親

find_next_siblings()搜尋所有兄弟

find_next_sibling()搜尋單個兄弟

title_tag=soup.title

print

(title_tag.find_parent(

'head'))

#print

(title_tag.find_parents(

'head'))

s=soup.find(text=

'elsie'

)print

(s.find_previous(

'p')

)print

(s.find_parents(

'p')

)a_tag=soup.a

print

(a_tag.find_next_sibling(

'a')

)print

(a_tag.find_next_siblings(

'a')

)

find_previous_siblings() 往上搜尋所有兄弟

find_previous_sibling() 往上搜尋單個兄弟

find_all_next() 往下搜尋所有元素

find_next()往下查詢單個元素

a_tag=soup.find(id=

'link3'

)# print(a_tag)

# print(a_tag.find_previous_sibling())

# print(a_tag.find_previous_siblings())

p_tag=soup.p

print

(p_tag.find_all_next())

print

(p_tag.find_next(

'a')

)

# 爬取全國所有的城市名稱以及對應的氣溫

import requests

from bs4 import beautifulsoup

defparse_page

(url)

: response=requests.get(url)

text=response.content.decode(

'utf-8'

) soup=beautifulsoup(text,

'html5lib'

) conmidtab=soup.find(

'div'

,class_=

'conmidtab'

)# print('conmidtab')

tables=conmidtab.find_all(

'table'

)for table in tables:

trs=table.find_all(

'tr')[

2:]for index,tr in

enumerate

(trs)

: tds=tr.find_all(

'td'

) city_td=tds[0]

if index==0:

city_td=tds[1]

city=

list

(city_td.stripped_strings)[0

] temp_td=tds[-2

] temp=

list

(temp_td.stripped_strings)[0

]print

('城市:'

,city,

'溫度:'

,temp)

defmain()

:#url = '' # 華東

# url = '' # 東北

#url = '' # 港澳台

urls =

['',''

,'']for url in urls:

parse_page(url)

if __name__ ==

'__main__'

: main(

)

FindAll和Linq where的區別

我們在集合查詢時經常用到findall和where篩選集合。二者實現的功能都是一樣的.1.findall是list型別中的乙個方法,而不像where是乙個linq表示式的擴充套件方法。我們知道linq表示式可以基於所有繼承ienumerable的集合上使用,而findall只能運用於list的實 例...

正規表示式的findall函式和match函式比較

findall函式返回的是正規表示式在字串中所有匹配結果的列表。我們先來看一組例子,來了解這個方法在返回匹配結果的細節。import re s abc defg hi jkl mnopq rst xyz regex str 1 w s w res 1 re.findall regex str 1,s...

查詢命令find 和grep

一般來說,find 是指查詢檔案,以檔名為依據,當然也可以指目錄,而grep是查詢字串,以查詢內容為主。當然二者還可以混合使用。find 格式 find path options tests actions 幾個簡單例子 find name test.txt print find type d te...