亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在列表中查找字符串

在列表中查找字符串

溫溫醬 2024-01-22 14:59:27
所以非常卡住首先我的 HTML 很難。有時它會丟失數據,如下所示。我的目的是在強之后獲取文本(很好,1:56:5,1:56.5 等等)。由于數據很混亂,我可能需要嵌套的 if 語句,因此當我構造列表時,我的數據是 true (參見下面的代碼)缺少數據 HTML<td><strong>Track Rating:</strong> GOOD</td><td></td><td><strong>Gross Time:</strong> 1:56:5</td><td><strong>Mile Rate:</strong> 1:56:5</td>普通 HTML<td><strong>Track Rating:</strong> GOOD</td><td><strong>Gross Time:</strong> 2:29:6</td><td><strong>Mile Rate:</strong> 1:58:6</td><td><strong>Lead Time:</strong> 30.3</td>我的代碼在下面,我想從 if 語句中提取數據,但我卡住了。任何幫助表示贊賞。我想做的是在這里收集 GOOD 并將其存儲在 track rating 中,并對我抓取的每個跟蹤評級執行此操作- 如果它不存在,我想將其存儲為空白。tableoftimes = race.find('table', class_='raceTimes')                for row in tableoftimes.find_all('tr'):                    string23 = [td.get_text() for td in row.find_all('td')]                    matching = [s for s in string23 if "Track Rating: " in s]                    if matching:                        trackrating = matching (#want to split to get after : but wont work in list)                    else:                        trackrating = ''
查看完整描述

2 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

如果您有BS4 4.7.1或更高版本,您可以嘗試以下代碼。


嘗試以下CSS選擇器,它將識別td標簽下的所有強標簽conatins : ,然后獲取父標簽td,然后用于contents[-1]獲取值


代碼:


html='''<td><strong>Track Rating:</strong> GOOD</td>

<td></td>

<td><strong>Gross Time:</strong> 1:56:5</td>

<td><strong>Mile Rate:</strong> 1:56:5</td>'''


soup=BeautifulSoup(html,'html.parser')


for item in soup.select('td>strong:contains(":")'):

    print(item.parent.contents[-1].strip())

輸出:


GOOD

1:56:5

1:56:5

next_element或者,您也可以在找到強標簽后使用。第next_element一個是強標簽,第二個next_element打印強標簽后的值


html='''<td><strong>Track Rating:</strong> GOOD</td>

<td></td>

<td><strong>Gross Time:</strong> 1:56:5</td>

<td><strong>Mile Rate:</strong> 1:56:5</td>'''


soup=BeautifulSoup(html,'html.parser')


for item in soup.select('td>strong:contains(":")'):

    print(item.next_element.next_element.strip())

輸出:


GOOD

1:56:5

1:56:5


查看完整回答
反對 回復 2024-01-22
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

嘗試使用。


from bs4 import BeautifulSoup


html = """<td><strong>Track Rating:</strong> GOOD</td>

<td></td>

<td><strong>Gross Time:</strong> 1:56:5</td>

<td><strong>Mile Rate:</strong> 1:56:5</td>"""


soup = BeautifulSoup(html, 'html.parser')

for td in soup.find_all('td'):

    if td.find('strong'):         #Check for `strong` tag 

        if td.strong.text == 'Track Rating:':

            print(td.find(text=True, recursive=False))   #Get direct text

輸出:


GOOD


查看完整回答
反對 回復 2024-01-22
  • 2 回答
  • 0 關注
  • 181 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號