您好……我正在使用 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
