【发布时间】:2021-04-10 20:28:51
【问题描述】:
我正在使用 BS4 进行网络抓取项目,我正在尝试汇总大学学费数据。我使用网站tutorialtracker.org 作为数据源。一旦我导航到一所特定的大学,我想从网站上刮掉学费数据。当我检查元素时,我可以看到存储为 innerHTML 的学费数据,但是当我使用美丽的汤来查找它时,它会返回关于该位置的所有内容,但学费数据除外。
这是我试图从中抓取的网址:https://www.tuitiontracker.org/school.html?unitid=164580
这是我正在使用的代码:
import urllib.request
from bs4 import BeautifulSoup
DOWNLOAD_URL = "https://www.tuitiontracker.org/school.html?unitid=164580"
def download_page(url):
return urllib.request.urlopen(url)
# print(download_page(DOWNLOAD_URL).read())
def parse_html(html):
"""Gathers data from an HTML page"""
soup = BeautifulSoup(html, features="html.parser")
# print(soup.prettify())
tuition_data = soup.find("div", attrs={"id": "price"}).innerHTML
print(tuition_data)
def main():
url = DOWNLOAD_URL
parse_html(download_page(DOWNLOAD_URL).read())
if __name__ == "__main__":
main()
当我打印学费数据时,我看到页面上存储学费数据的相关标签,但没有数值。我尝试过使用 .innerHTML 和 .string,但它们最终会打印 None,或者只是一个空格。
真的很困惑,感谢您的澄清。
【问题讨论】:
-
我永远无法理解为什么图像代码比纯文本代码更好复制。 o.O
-
话虽如此,请阅读How to Ask 并编辑您的问题,使其类似于minimal reproducible example。
-
谢谢,这是我第一次使用堆栈溢出来提问。我将原始代码作为文本而不是图像包含在内。
标签: python html beautifulsoup innerhtml