【发布时间】:2022-01-18 15:34:45
【问题描述】:
我通过抓取网站获得了字符串列表。我希望代码打印该列表中的 HTML 元素,如果它们包含“L”。 我设法编写了一个在“普通列表”上运行良好的代码,我手动将其写入代码(下面的示例 1),但是一旦我尝试使用该代码过滤 HTML 元素列表,它只会打印空“[ ]" 即使我知道应该有多个值。
这是有效的代码:
import urllib.request
from bs4 import BeautifulSoup
url = 'https://kouluruoka.fi/menu/kouvola_koulujenruokalista'
request = urllib.request.Request(url)
content = urllib.request.urlopen(request)
parse = BeautifulSoup(content, 'html.parser')
span_elements = parse.find_all('span')
#a list like this works just fine
lst = ['HOLA','BONJOUR','HELLO','KONNICHIWA','SALVE','GUTEN DAG']
filtered_list = list(filter(lambda k: 'L' in k, lst))
print(filtered_list)
>>>['HOLA','HELLO','SALVE']
但是一旦我使用我的网络抓取列表 (span_elements) 代替 hellos 列表,它就会打印空白:
import urllib.request
from bs4 import BeautifulSoup
url = 'https://kouluruoka.fi/menu/kouvola_koulujenruokalista'
request = urllib.request.Request(url)
content = urllib.request.urlopen(request)
parse = BeautifulSoup(content, 'html.parser')
span_elements = parse.find_all('span')
#a list of HTML elements doesnt work
lst = span_elements
filtered_list = list(filter(lambda k: 'L' in k, lst))
print(filtered_list)
>>>[]
我已经尝试了几个小时,但无济于事,不胜感激! 谢谢!
【问题讨论】:
-
举个例子,你希望网站的输出是什么?
标签: python html web-scraping filter beautifulsoup