使用BeautifulSoup查找<img>的alt文本
这是我从这行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']