Skip to main content
 首页 » 编程设计

python之使用 Python : excluding certain outputs (webpage titles)

2025年05月04日41birdshome

您好……我正在使用 Python 和 BeautifulSoup 来浏览公司的网页,验证项目的有效性。

脚本如下:

from bs4 import BeautifulSoup 
import urllib2 
import xlwt 
 
 
pages = [36523,25658,85263,55215] 
 
for page in pages: 
 
    url = "http://company.com/" + page 
    page = urllib2.urlopen(url) 
    soup = BeautifulSoup(page.read()) 
 
    page_title = soup.find_all("title") 
    print page_title 

输出是:

[<title>Nil</title>] 
[<title>Item details</title>] 
[<title>Nil</title>] 
[<title>Item details</title>] 

有些条目不存在,页面标题显示为Nil。我想在输出中排除这些 Nil,所以我很累:

If len(page_title) == 20: 
    Pass 
 
If len(page_title) == 20: 
    Continue 
 
If page_title == ‘[<title>Nil</title>]’: 
    Continue # or Pass 

但都没有成功,我没有朝着正确的方向前进。那么如何才能让 Nil 不显示在结果中呢?

谢谢。


感谢 Ashoka Lella,当下部更改为以下时,下面的工作:

page_title = soup.find_all("title") 
 
for each_page in page_title: 
    err_msg = soup.find_all(text="Nil") 
    if len(err_msg) == 0: 
        print each_page 

请您参考如下方法:

你试图计算 page_title 的长度但是,实际上你应该计算 page_title 中每个元素的长度。

如果page_title = ['<title>Nil</title>'] .然后len(page_title)=1因为它包含一个元素但是,len(page_title[0]) = 20

因此,您本质上应该做的是

for page in pages: 
    url = "http://company.com/" + page 
    page = urllib2.urlopen(url) 
    soup = BeautifulSoup(page.read()) 
    page_title = soup.find_all("title") #This will return a list of titles 
    for title in page_title: 
        if title != "<title>Nil</title>": 
            print title