import requests
from bs4 import BeautifulSoup
url=("http://finance.naver.com/news/mainnews.nhn")
r=requests.get(url)
soup=BeautifulSoup(r.content)
a_data = soup.find_all("li",{"class":"block1"})
for item in a_data:
print item.contents[0].find_all("dt",{"class":"articleSubject"})[0].text
在此代码中,当我运行此代码时。我有这样的错误。 " AttributeError:' NavigableString'对象没有属性' find_all'"
我该如何解决这个问题???? 我已经尝试过尝试和方法。但是,它没有工作......
// Html代码
<li class="block1">
<dl>
<dt class="articleSubject">
<span class="remark"></span> <!-- 말머리는 span class="remark" 로 묶임 -->
<a href="/news/news_read.nhn?
article_id=0003289339&office_id=009&mode=mainnews&type=&date=2014-08-
27&page=1">**시총 9조 `모바일 공룡` 다음카카오 합병 승인…업계 지각변동 예고**</a>
</dt>
<dd class="articleSummary">
다음카카오가 합병을 위한 마지막 문턱을 넘어섰다. 네이버의 독주가 지속되고 있는 온라인·모바일 업계에
적지 않은 시장 판도 변화가 예상된다. 27일 다음과 카카오는 각각 제주 ..
<span class="press">매일경제 </span>
<span class="bar">|</span>
<span class="wdate">2014-08-27 11:40:05</span>
</dd>
</dl>
</li>
答案 0 :(得分:1)
如果您尝试使用dt
属性class
查找与articleSubject
相关联的文字,则可以在item
内直接找到该文字。
通过这样做:
>>> for item in a_data:
... print item.find_all("dt",{"class":"articleSubject"})[0].text
打印:
**시총 9조 `모바일 공룡` 다음카카오 합병 승인…업계 지각변동 예고**
用于上述HTML。如果您针对代码中的URL运行此代码,您将获得20个结果。
item.contents
是一个以\n
作为第一项的列表。因此,对新行字符执行find_all()
会抛出AttributeError
答案 1 :(得分:0)
我会将你的循环NavigableStrings与标签分开。第一:
import NavigableString
然后在你的循环中测试汤中的所有元素,看看它们是标签还是使用NavigableStrings:
if isinstance(object, NavigableString):
Do something with this event
else:
Do something with thing that is not NavigableString