这是我到目前为止的代码:
import urllib
from bs4 import BeautifulSoup
lis = []
webpage = urllib.urlopen('http://facts.randomhistory.com/interesting-facts-about- cats.html')
soup = BeautifulSoup(webpage)
for ul in soup:
for li in soup.findAll('li'):
lis.append(li)
for li in lis:
print li.text.encode("utf-8")
我只是试图从打开和关闭“li”标签之间获取cat事实,并以一种看起来不会搞砸的方式输出它们。目前,此代码的输出重复所有事实4次左右,“不能”这个词出现为“不能”。
我很感激任何帮助。
答案 0 :(得分:1)
您不需要外部循环(for ul in soup
)。如果删除它将输出一次。
soup = BeautifulSoup(webpage)
for li in soup.findAll('li'):
lis.append(li)
for li in lis:
print li.text.encode("utf-8")
答案 1 :(得分:1)
它的Content-Type
表示其编码为ISO-8859-1
,但它正在撒谎。告诉美丽的汤使用from_encoding
忽略它的谎言。你可以通过给SoupStrainer
parse_only
content-td
只选择for
类的东西来减少工作量。最后,您可以简化import urllib2
import bs4
webpage = urllib2.urlopen('http://facts.randomhistory.com/interesting-facts-about-cats.html')
soup = bs4.BeautifulSoup(webpage, from_encoding='UTF-8',
parse_only=bs4.SoupStrainer(attrs='content-td'))
for li in soup('li'):
print li.text.encode('utf-8')
循环。一起来:
{{1}}
您可以通过用一个空格替换连续的空格并删除上标来进一步改善输出。