我试图从一个网页上得到不同的大学名称和排名。我尝试过的脚本可以解析前几个名字及其相应的排名。在
然而,该页面中有233个名字和他们的排名,但只有当页面向下滚动时,才能看到他们。问题是当页面向下滚动时,url仍然是相同的,因此我不能创建任何逻辑来处理分页。在
我不希望使用selenium,这就是我创建这篇文章来解决相同的使用请求的原因。在
到目前为止,我已经写了(抓取了前几个记录):
import requests
from bs4 import BeautifulSoup
url = 'https://www.usnews.com/best-colleges/rankings/national-liberal-arts-colleges'
r = requests.get(url,headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(r.text,"lxml")
for item in soup.select("[id^='school-']"):
name = item.select_one("[class^='DetailCardColleges__StyledAnchor']").text
rank = item.select_one("[class^='ranklist-ranked-item'] > strong").text
print(name,rank)
如何使用请求解析所有的名字及其排名?
对您来说,好的一面是这个页面使用了jsonapi进行分页,所以您甚至不需要使用
bs4
,您只需使用请求本身就可以了在
scrape_data
中,我刚刚打印了整个数据,但是您可以更改要从该JSON中提取哪些数据并刮取这些项相关问题 更多 >
编程相关推荐