虽然它存在,但无法找到文本

时间:2016-09-05 14:35:56

标签: python web-scraping beautifulsoup find

我正在学习使用Python进行网络报废。我编写了代码来检索印度黄页之一的公司名称

r =  requests.get("http://xyzxyz", headers={'User-Agent' : "Magic Browser"})
soup= BeautifulSoup(r.content,"html.parser")

for link in soup.findAll("div", {"class" : "col-sm-5"}):
    coLink = link.find("span" , {"class" : "jcn"})
    companyName = coLink.find("a").text

我收到错误“AttributeError:'NoneType'对象没有属性'find'”。我知道如果对象没有找到任何内容我们会收到此错误。但是,如果我打印(coLink),它会在每个span类中提供以下链接

<span class="jcn"><a href="http://xyz/Kolkata/Sunrise-International-&lt;near&gt;-B-R-B-Basu-Road-/033P3001041_BZDET?xid=S29sa2F0YSBUYXBlciBSb2xsZXIgQmVhcmluZyBEZWFsZXJz" onclick="_ct('clntnm', 'lspg');" title="Sunrise International in , Kolkata">Sunrise International</a>
</span>
<span class="jcn"><a href="http://xyz/Kolkata/Shree-Shakti-Vyapaar-PVT-LTD/033P6001995_BZDET?xid=S29sa2F0YSBUYXBlciBSb2xsZXIgQmVhcmluZyBEZWFsZXJz" onclick="_ct('clntnm', 'lspg');" title="Shree Shakti Vyapaar PVT LTD in , Kolkata">Shree Shakti Vyapaar PVT LTD</a>
</span>

请帮助您如何获取公司文本?

1 个答案:

答案 0 :(得分:0)

不解释当前问题,但提供替代解决方案 - 您可以使用与所需a元素匹配的CSS selector

for link in soup.select(".col-sm-5 .jcn a"):
    print(link.get_text())

这样,如果span内没有a链接,您就不会收到任何错误。

请注意,col-sm-5是一个可怕的类名,用于定位元素 - 它是特定于UI /布局的,并且很有可能被更改。