Python:我正在尝试通过网络抓取页面,但找不到 html
Python: I am trying to web scrape a page but I am not able to find the html
我正在尝试 抓取 此页面 (https://www.polarislist.com/)
我正在尝试提取所有数据,例如 class 大小、free/reduced 午餐/ student/tacher 比率、按种族划分的学生人口统计百分比,以及麻省理工学院、哈佛大学、普林斯顿大学各自的统计数据.
然而,当我查看页面源代码时,我无法找到包含此类信息的标签
我正在使用 Python 3.7, Bs4
我检查了页面源
我目前拥有的:
#importing lbiraries
import requests
import bs4
from bs4 import BeautifulSoup
page_link = 'https://www.polarislist.com'
page_response = requests.get(page_link, timeout=5)
page_content = BeautifulSoup(page_response.content, "html.parser")
result_name_of_hs = page_content.find_all('div', attrs={'data-test': 'name'})
print(result_name_of_hs)
***输出为[]
我希望 BS4 能够获取已识别的标签并将其从站点中提取出来。但是,当我在检查页面元素中时,我找不到任何东西,
我在检查一个元素时看到了这个,但是无法获取 div data-testname
<div class="font-size-20 font-weight-semi-bold block-with-text" data-test="name">THOMAS JEFFERSON HIGH SCHOOL</div>
您看到的数据是由页面异步加载的。当您打开 Firefox/Chrome 开发人员工具时,您会看到数据是从不同的 URL 中提取的(在本例中为 https://www.polarislist.com/api/high_schools_orange_cake
)。
要从 JSON 加载数据,您可以使用:
import json
import requests
url = 'https://www.polarislist.com/api/high_schools_orange_cake'
data = requests.get(url).json()
print(json.dumps(data, indent=4))
打印:
[
{
"id": 18450,
"name": "THOMAS JEFFERSON HIGH SCHOOL",
"city": "ALEXANDRIA",
"state": "VA",
"public": true,
"num_senior": 423,
"num_american_indian": 39,
"num_asian": 1084,
"num_hispanic": 34,
"num_black": 24,
"num_white": 530,
"student_teacher_ratio": "16.93",
"num_free_reduced_lunch": 33,
"total_students": 1820,
... and so on.
我正在尝试 抓取 此页面 (https://www.polarislist.com/) 我正在尝试提取所有数据,例如 class 大小、free/reduced 午餐/ student/tacher 比率、按种族划分的学生人口统计百分比,以及麻省理工学院、哈佛大学、普林斯顿大学各自的统计数据.
然而,当我查看页面源代码时,我无法找到包含此类信息的标签
我正在使用 Python 3.7, Bs4 我检查了页面源
我目前拥有的:
#importing lbiraries
import requests
import bs4
from bs4 import BeautifulSoup
page_link = 'https://www.polarislist.com'
page_response = requests.get(page_link, timeout=5)
page_content = BeautifulSoup(page_response.content, "html.parser")
result_name_of_hs = page_content.find_all('div', attrs={'data-test': 'name'})
print(result_name_of_hs)
***输出为[]
我希望 BS4 能够获取已识别的标签并将其从站点中提取出来。但是,当我在检查页面元素中时,我找不到任何东西,
我在检查一个元素时看到了这个,但是无法获取 div data-testname
<div class="font-size-20 font-weight-semi-bold block-with-text" data-test="name">THOMAS JEFFERSON HIGH SCHOOL</div>
您看到的数据是由页面异步加载的。当您打开 Firefox/Chrome 开发人员工具时,您会看到数据是从不同的 URL 中提取的(在本例中为 https://www.polarislist.com/api/high_schools_orange_cake
)。
要从 JSON 加载数据,您可以使用:
import json
import requests
url = 'https://www.polarislist.com/api/high_schools_orange_cake'
data = requests.get(url).json()
print(json.dumps(data, indent=4))
打印:
[
{
"id": 18450,
"name": "THOMAS JEFFERSON HIGH SCHOOL",
"city": "ALEXANDRIA",
"state": "VA",
"public": true,
"num_senior": 423,
"num_american_indian": 39,
"num_asian": 1084,
"num_hispanic": 34,
"num_black": 24,
"num_white": 530,
"student_teacher_ratio": "16.93",
"num_free_reduced_lunch": 33,
"total_students": 1820,
... and so on.