繁体   English   中英

python,beautifulsoup)如果语句不起作用

[英]python, beautifulsoup) if Statement doesn't work

我想使用此源解析URL和文本:

<div class="news_list">
                <a href="/media/view.asp?idx=68230&amp;page=2&amp;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&amp;page=2&amp;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'

但是在if语句上没有打印文字或href。

我认为似乎没有语法错误,没有错误。 我不知道哪一部分错了。

这是我的代码的结果

结果画面

a.parent.get('class')返回一个列表(因为标签可以有很多类),并且列表不等于字符串

翻转if语句以检查列表是否包含该类

if "news_list" in a.parent.get('class', []):

由于您的代码中的错误已在此处解决,因此我建议您改用CSS选择器

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', []):
        ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM