我撰寫了一個腳本來提取可用于文本提取的可用報告 url 擴展頁面串列。
我已經使用決議和 BeautifulSoup 來提取使用此方法的最新報告的參考區域。
home = BeautifulSoup(home_url, 'html.parser')
container = home.find('div', attrs={'class': 'list'})
report_url_locations = list(x for x in container.findAll('a'))
這會為每個報告生成一個串列,它是唯一的 html 擴展名,每次上傳新報告時都會更新,例如:
[<a href="2022-05/13/c_76843.htm">May 16: Daily report</a>,
<a href="2022-05/12/c_76842.htm">May 15: Daily report</a>,
<a href="2022-05/11/c_76841.htm">May 14: Daily report</a>,
<a href="2022-05/10/c_76839.htm">May 13: Daily report</a>]
我已經設法撰寫了一些代碼來去除 html 垃圾并只保留第一個元素的擴展名(即第一個報告)。
latest_sitrep_location = str(report_url_locations[0])
latest_sitrep_htm_location = re.search(r"[0-9] -[0-9] /[0-9] / c_[0-9] . htm",latest_sitrep_location)
這給了我:
"2022-05/13/c_76843.htm"
但是,當我嘗試對串列中的每個元素執行此操作時,它只會將我所有的垃圾扔在中間:
all_urls= re.findall(r"[0-9] -[0-9] /[0-9] / c_[0-9] . htm", str(report_url_locations))
all_urls
['2022-05/13/c_76843.htm">May 16: Daily Report</a>, <a href="2022-05/12/c_76842.htm">May 15: Daily Report</a>, <a href="2022-05/11/c_76841.htm">May 14: Daily Report</a>, <a href="2022-05/10/c_76839.htm">May 13: Daily Report</a>]
但我想要的是:
["2022-05/13/c_76843.htm","2022-05/12/c_76842.htm","2022-05/11/c_76841.htm","2022-05/10/c_76839.htm"]
有人可以告訴我我需要在我的 RegEx 中包含什么以確保排除其他 html 嗎?我相當確定我需要將 report_url_locations 中的每個元素都轉換為字串,但我不知道如何整體執行此操作。
uj5u.com熱心網友回復:
你為什么不試試這個:
report_url_locations = [x["href"] for x in container.findAll('a')]
然后只需列印report_url_locations
順便說一句,這就是為什么您不應該使用regex它來決議 HTML。
uj5u.com熱心網友回復:
編輯:不要使用正則運算式進行 HTML 決議,你知道的。
如果你決定使用正則運算式,你可以使用r'(?:href=)\"(.*?)\"'.
text="""<a href="2022-05/13/c_76843.htm">May 16: Daily report</a>,
<a href="2022-05/12/c_76842.htm">May 15: Daily report</a>,
<a href="2022-05/11/c_76841.htm">May 14: Daily report</a>,
<a href="2022-05/10/c_76839.htm">May 13: Daily report</a>
"""
re.findall(r'(?:href=)\"(.*?)\"', text)
哪個輸出
['2022-05/13/c_76843.htm',
'2022-05/12/c_76842.htm',
'2022-05/11/c_76841.htm',
'2022-05/10/c_76839.htm']
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/476795.html
