使用BeautifulSoup查找<img>的alt文本

2 投票
2 回答
5263 浏览
提问于 2025-04-17 13:56

这是我从这行Python代码中得到的结果

listm = soup.findAll('td',{'class':'thumb'})

当我遍历这个列表时,这里有一个项目的例子...

<a href="/property-search/property-details/1021206?StrtNum=1507"><img alt="1507 BOSTWICK LN" src="/res/slir/w75-h57-c4:3/propertyimages/20120904/BB/DSCN0738.JPG"/></a>

不过,我真正想要的是在 <img alt= 中的 "1507 BOSTWICK LN"

我试过用 .get_text,结果是空白,我还试过 lista = soup.findAll('td',{'class':'thumb'},{'alt':'img'}),还有其他几种不同的写法,但都没有得到我想要的文本。

我希望BeautifulSoup能返回这个文本,或者用正则表达式可以吗?我对正则表达式一窍不通,任何建议都非常感谢!!

2 个回答

3

你的 td 元素里面有一些嵌套的元素;在每个 td 元素中查找 img 标签,然后获取 alt 属性,进行项目查找:

for td in listm:
    img = td.find('img')
    if img is not None:
        print img['alt']
4

试试这个:

listm = soup.findAll('td',{'class':'thumb'})
for elem in listm:
    print elem('img')[0]['alt']

这个代码会在每个 td 标签里找到 img 标签,并打印出 alt 属性的值。

补充说明:

你不应该假设每个地方都有 img 标签。可以这样做:

listm = soup.findAll('td',{'class':'thumb'})
for elem in listm:
    imgs = elem('img')
    if imgs:
        print imgs['alt']

撰写回答