BeautifulSoup findAll()找不到全部,无论我使用哪个解析器

时间:2018-10-30 19:54:57

标签: beautifulsoup html-parsing findall

因此,我已经通读了所有关于findAll()无法正常工作的问题,而这些问题似乎总是与特定的html解析器有关。我已经使用默认的“ html.parser”以及“ lxml”和“ html5lib”运行了以下代码,但当我应该找到14时,我只能找到一个实例。

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_url = 'https://robertsspaceindustries.com/pledge/ships'

uClient = uReq(my_url)

page_html = uClient.read()
uClient.close()

page_soup = soup(page_html, features = "lxml")

containers = page_soup.findAll("ul", {"class":"ships-listing"})
len(containers)   

我尝试发布HTML代码的图片,但是我的信誉不高。这是图像(https://imgur.com/a/cOLO8GO)的链接。

1 个答案:

答案 0 :(得分:1)

当您通过urllib(或requests HTTP库)下载页面时,它将下载原始HTML源文件。

最初只有一个类名为“ ships-listing”的sinlge标签,因为该标签随源页面一起提供。但是,一旦向下滚动,页面会生成其他<ul class='ships-listing'>,这些元素由JavaScript生成。

enter image description here

因此,当您使用urllib下载页面时,下载的内容仅包含原始源页面(您可以在浏览器中通过view-source选项查看该页面)。