我想用这个来源解析一个URL和文本:
<div class="news_list">
<a href="/media/view.asp?idx=68230&page=2&kind=2">
<img src="/media/upFiles2/2018/04/4-82(250).jpg" height="70" alt="" class="news_img">
<span class="news_txt">영등포구, 7월까지 어린이보호구역 CCTV 환경 개선한다</span>
</a><br>
<a href="/media/view.asp?idx=68230&page=2&kind=2">영등포구가 사업비 1억5,000만여원을 투입해 오는 7월까지 어린이보호구역 내 설치된 방범용 CCTV 주변 환경을 개선한다. 구는 환경개선사업을 통해 학교폭력, 유괴 등 각종 범죄와 교통사고로부터 어린이들을 안전하게...</a> <span class="news_writer">박미영 기자 | 2018.04.07 11:38</span>
</div>
标签'a'上没有特定功能,所以我使用父类名称 这是我的代码
from urllib.request import urlopen
from bs4 import BeautifulSoup
page = urlopen("http://www.boannews.com/media/t_list.asp?Page=1&kind=" )
soup = BeautifulSoup(page,"lxml")
for a in soup.find_all("a") :
print(a.parent.get('class'))
if a.parent.get('class') == "news_list" :
print(a.text)
print(a.get('href'))
当我使用print(a.parent.get('class'))
时,我可以获得'news_list'
但是如果声明没有打印文本或href。
我认为似乎没有语法错误,没有错误。我不知道哪个部分是错的。
这是我的代码的结果
答案 0 :(得分:4)
a.parent.get('class')
正在返回一个列表(因为标签可以包含多个类),并列出不等于字符串
翻转if语句以检查列表是否包含类
if "news_list" in a.parent.get('class', []):
答案 1 :(得分:0)
由于您的代码中的错误已经解决here,我建议您改为使用CSS selectors。
for a in soup.select('.news_list > a'):
print(a.text)
print(a['href'])
请注意使用select
方法而不是find_all
。
它比以前更清洁:
for a in soup.find_all('a'):
if 'news_list' in a.parent.get('class', []):
...