【发布时间】:2016-09-05 14:35:56
【问题描述】:
我正在学习使用 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' object has no attribute 'find'”。我知道如果对象没有找到任何东西,我们会得到这个错误。但是,如果当我打印(coLink)时,它会在每个跨度类中提供以下链接
<span class="jcn"><a href="http://xyz/Kolkata/Sunrise-International-<near>-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>
你能帮忙如何获取公司的文本吗?
【问题讨论】:
-
您确定所有
span.jcn标签都包含在a标签内吗? -
所以添加简单的异常将通过忽略所有没有标签的 span.jcn 来解决这个问题?
-
在任何情况下,你应该先检查,如果
coLink.find("a")返回一个你可以获取文本的标签,或者它返回None。 -
@ChristosPapoulas 正如我在问题中提到的,我已经尝试过 print(colink)。我还提供了该打印的输出。你可以在输出中看到“a”在那里。
-
不错!记得给cmets点赞!谢谢
标签: python web-scraping beautifulsoup find