使用Python从HTML中提取值

时间:2018-04-23 18:13:35

标签: python beautifulsoup

我在从网站的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)

1 个答案:

答案 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))