(Python 3 OS Win7)列表未显示预期输出

时间:2017-08-30 17:09:52

标签: python list beautifulsoup html-parsing

输入网址 http://py4e-data.dr-chuck.net/comments_42.html

当我运行此代码时,预期的输出是一个列表,其中包含正在程序中解析的标记内的数字。但我得到的只是列表中的最后一个数字。

请更正程序,以显示所有已解析标签中的数字列表

from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
import re

# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

url = input('Enter - ')
html = urlopen(url, context=ctx).read()

# html.parser is the HTML parser included in the standard Python 3 library.
# information on other HTML parsers is here:
# http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser
soup = BeautifulSoup(html, "html.parser")

# Retrieve all of the anchor tags
sum_of_num = 0
tags = soup('tr')
for tag in tags:
    # Look at the parts of a tag
    print('TAG:', tag)
    num = re.findall('[0-9]+',str(tag))
print(num)

1 个答案:

答案 0 :(得分:0)

如果你想要一个列表,你必须建立一个列表。您需要先声明空列表,然后在每次迭代中附加值:

res = []
for tag in tags:
    # Look at the parts of a tag
    print('TAG:', tag)
    res.append(re.findall('[0-9]+',str(tag)))

print(res)

如果您需要非常易读的输出,可以使用pprint

import pprint
pprint.pprint(res)

(通过在循环外部打印num,您只打印计算的最后一个值,从循环中转出)