我在从网站的HTML中提取玩家ID方面遇到了一些麻烦。我以前做过这个并没有问题,但是这个特定html的href有点不同而且让我难过。下面是HTML和我编写的脚本的一部分,它们在打印后为每行返回{}。下面的ID是'lynnla02'并且在HTML中显示两次,因此提取任一版本都没问题。任何帮助将不胜感激。
HTML:
<tr data-row="248">
<th scope="row" class="right " data-stat="ranker" csk="240">1</th>
<td class="left " data-append-csv="lynnla01" data-stat="player">
<a href="/players/l/lynnla01.shtml">Lance Lynn</a>
我的一次尝试:
ID = []
for tag in soup.select('a[href^=/players]'):
link = tag['href']
query = parse_qs(link)
ID.append(query)
print(ID)
答案 0 :(得分:2)
使用内置和 BeautifulSoup
from bs4 import BeautifulSoup as bs
html = '''<tr data-row="248">
<th scope="row" class="right " data-stat="ranker" csk="240">1</th>
<td class="left " data-append-csv="lynnla01" data-stat="player">
<a href="/players/l/lynnla01.shtml">Lance Lynn</a>'''
soup = bs(html, 'lxml')
hrefs = soup.find_all('a')
for a_tag in hrefs:
if a_tag['href'].startswith('/players'):
print(a_tag['href'])
使用正则表达式:
regex = re.compile('/players.+')
a_tags = soup.find_all('a', href=regex)
#print (a_tags), you can loop for i... and do print(i['href'])
打印您要求的特定字符串:
for i in a_tags:
only_specific = re.match(regex, i['href'])
print(only_specific.group(1))