我在这段代码中遇到了一些问题,我试图从pokedex.org
中获取所有口袋妖怪的名字。我的原始代码如下:
import requests
from bs4 import BeautifulSoup
url = 'https://pokedex.org/'
html = BeautifulSoup(requests.get(url).content,'lxml')
uls = html.find('ul', attrs = {'id':'monsters-list'})
print(uls.prettify())
然后,uls
应该包含一些<li></li>
,它们本身包含<span></span>
,名称被包装在其中。它可以很好地获取前100个口袋妖怪的所有内容,但是对于其他500个口袋妖怪,它会返回空的<li></li>
。我尝试了不同的解析器,如html.parser
、html5lib
和lxml
,但它没有改变任何东西
页面是动态加载的,因此
requests
不支持它。我们可以使用Selenium作为刮取页面的替代方法,并且还需要向下滚动页面安装时使用:
pip install selenium
从here下载正确的ChromeDriver。以下是代码:
输出最后一项:
看起来元素是由JavaScript创建的,但请求无法处理JavaScript动态生成的元素。 (如果我错了,请纠正我)
我建议使用selenium和ChromeWebDriver来获取页面源代码, 然后可以使用BeautifulSoup进行解析
(假设您使用chrome浏览器)
最后我们来看看代码
相关问题 更多 >
编程相关推荐