簡體   English   中英

Beautiful Soup 數據摘錄

[英]Beautiful Soup data extract

有一個 local.html 我從中提取點數據,用 BeautifulSoup 解析但我不知道如何提取div內的日期,解析數組如下:

<div class="_a6-p"><div><div><a href="https://www.instagram.com/chuckbasspics" target="_blank">chuckbasspics</a></div><div>Jan 7, 2013, 5:41 AM</div></div></div><div class="_3-94 _a6-o"></div></div><div class="pam _3-95 _2ph- _a6-g uiBoxWhite noborder"><div class="_a6-p"><div><div>

知道怎么做嗎?

我已經使用以下代碼提取了用戶和 url (href):

fl_html = open('followers.html', "r")
index = fl_html.read()
soup = BeautifulSoup(index, 'lxml')

usernames = soup.find_all('a', href=True)


for i in usernames:
    users.append(i.get_text(strip=True))
    url_follower.append(i['href'])

您可以使用bs4 API 或 CSS 選擇器:

from bs4 import BeautifulSoup

html_doc = """<div class="_a6-p"><div><div><a href="https://www.instagram.com/chuckbasspics" target="_blank">chuckbasspics</a></div><div>Jan 7, 2013, 5:41 AM</div></div></div><div class="_3-94 _a6-o"></div></div><div class="pam _3-95 _2ph- _a6-g uiBoxWhite noborder"><div class="_a6-p"><div><div>"""

soup = BeautifulSoup(html_doc, "html.parser")

使用.get_text()separator=提取日期

您可以使用自定義分隔符從 HTML 片段中獲取所有文本,然后是.split

t = soup.get_text(strip=True, separator="|").split("|")
print(t[1])

印刷:

Jan 7, 2013, 5:41 AM

CSS 選擇器

查找<div>的下一個包含<a>的兄弟:

t = soup.select_one("div:has(a) + div")
print(t.text)

打印:

Jan 7, 2013, 5:41 AM

使用bs4 API

時間必須包含PMAM ,因此 select <div>包含此字符串:

t = soup.find("div", text=lambda t: t and (" AM" in t or " PM" in t))
print(t.text)

印刷:

Jan 7, 2013, 5:41 AM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM