我嘗試選擇分頁部分并喜歡提取最大結果的數量2143:
numbers = contents.find(name="div", attrs={"class": "pagination"})
print(numbers .attrs)
print(numbers )
print(numbers .get_text(' ', strip=True))
這段代碼給了我這樣的結果:
{'class': ['pagination']}
<div class="pagination"><span>Showing 1-30 of 2143</span><ul><li><div class="prev"></div></li><li><span class="disabled">1</span></li><li><a data-analytics='{"click_id":132,"module":1,"listing_page":2}' data-page="2" data-remote="true" href="/san-francisco-ca/dentists?page=2">2</a></li><li><a data-analytics='{"click_id":132,"module":1,"listing_page":3}' data-page="3" data-remote="true" href="/san-francisco-ca/dentists?page=3">3</a></li><li><a data-analytics='{"click_id":132,"module":1,"listing_page":4}' data-page="4" data-remote="true" href="/san-francisco-ca/dentists?page=4">4</a></li><li><a data-analytics='{"click_id":132,"module":1,"listing_page":5}' data-page="5" data-remote="true" href="/san-francisco-ca/dentists?page=5">5</a></li><li><a class="next ajax-page" data-analytics='{"click_id":132}' data-page="2" data-remote="true" href="/san-francisco-ca/dentists?page=2">Next</a></li></ul></div>
Showing 1-30 of 2143 1 2 3 4 5 Next
如何提取2143唯一:
Showing 1-30 of 2143 1 2 3 4 5 Next
uj5u.com熱心網友回復:
選擇更具體的標簽,一個css selectors用于鏈接條件的選項 - 選擇 first direct <span>of <div>with class pagination,用空格分割文本并獲取串列的最后一個元素:
soup.select_one('div.pagination > span').text.split(' ')[-1]
例子
html = '''<div ><span>Showing 1-30 of 2143</span><ul><li><div ></div></li><li><span >1</span></li><li><a data-analytics='{"click_id":132,"module":1,"listing_page":2}' data-page="2" data-remote="true" href="/san-francisco-ca/dentists?page=2">2</a></li><li><a data-analytics='{"click_id":132,"module":1,"listing_page":3}' data-page="3" data-remote="true" href="/san-francisco-ca/dentists?page=3">3</a></li><li><a data-analytics='{"click_id":132,"module":1,"listing_page":4}' data-page="4" data-remote="true" href="/san-francisco-ca/dentists?page=4">4</a></li><li><a data-analytics='{"click_id":132,"module":1,"listing_page":5}' data-page="5" data-remote="true" href="/san-francisco-ca/dentists?page=5">5</a></li><li><a data-analytics='{"click_id":132}' data-page="2" data-remote="true" href="/san-francisco-ca/dentists?page=2">Next</a></li></ul></div>'''
soup=BeautifulSoup(html,'lxml')
soup.select_one('div.pagination > span').text.split(' ')[-1]
輸出
2143
uj5u.com熱心網友回復:
代替numbers.get_text, find"span",獲取文本并rsplit乘以 1 并獲取第二個元素:
out = numbers.find('span').text.rsplit(' ', 1)[1]
輸出:
'2143'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/418828.html
標籤:
