从Element.tag获取ID属性

2024-09-28 21:23:06 发布

您现在位置:Python中文网/ 问答频道 /正文

从BeautifulSoup元素标记中获取ID值(在下面的示例中为2758769)并分配给变量的最佳方法是什么

type(an_element)
Out[13]: bs4.element.Tag

an_element
Out[14]: <span class="addr"><a href="p.php?q=Ascot+Vale&amp;sta=vic&amp;id=2758769&amp;address=1%2F39+Sandown+Road%2C+Ascot+Vale" target="_blank">1/39 Sandown Road</a></span>

一个_元素。get('id')返回none


Tags: 方法标记anid元素示例elementout
2条回答

此元素没有id。它有url,它有字符串id=,但它不是标签的id

您应该使用get("href")或regex之类的标准字符串函数来搜索文本中的值。或者可以使用urllib.parse.parse_qs('q=Ascot+...')

import urllib.parse
from bs4 import BeautifulSoup

html = '<span class="addr"><a href="p.php?q=Ascot+Vale&amp;sta=vic&amp;id=2758769&amp;address=1%2F39+Sandown+Road%2C+Ascot+Vale" target="_blank">1/39 Sandown Road</a></span>'

soup = BeautifulSoup(html)

href = soup.find('a').get('href')

args = href.split('?')[1]

data = urllib.parse.parse_qs(args)

print(data['id'][0])

编辑:使用split()相同

import urllib.parse
from bs4 import BeautifulSoup

html = '<span class="addr"><a href="p.php?q=Ascot+Vale&amp;sta=vic&amp;id=2758769&amp;address=1%2F39+Sandown+Road%2C+Ascot+Vale" target="_blank">1/39 Sandown Road</a></span>'

soup = BeautifulSoup(html)

href = soup.find('a').get('href')

args = href.split('?')[1]

id_ = args.split('id=')[1].split('&')[0]

print(id_)

您只需要提取url并解析查询参数。 正则表达式的另一种方法:

 from bs4 import BeautifulSoup
 import re

 soup = BeautifulSoup('<span class="addr"><a href="p.php?q=Ascot+Vale&amp;sta=vic&amp;id=2758769&amp;address=1%2F39+Sandown+Road%2C+Ascot+Vale" 
    target="_blank">1/39 Sandown Road</a></span>',"html.parser")
 links = soup.findAll('a', href=True)
 for link in links:
    href = link['href']
    a = re.search("id=.*&",href)
    if a:
      x = a.group(0)
      x = x[:-1]
      print(x)

相关问题 更多 >