【发布时间】:2020-09-24 13:46:03
【问题描述】:
所以我有这个网站,它由几个表格组成,它们看起来像下面的那个。
这些表格只是显示我下一次讲座的时间,表格的 URL 可以在下面的代码中找到
现在,我想抓取这个网站并获取以下信息
Date, Time, Course name, Lecturer
下面的代码几乎可以做到这一点。它会找到每堂课、名称和相关信息。 但是,我无法确定特定讲座发生在哪一天。如何将我抓取的讲座与相应的日期相匹配?
输出
['08:15-10:00', 'Forelesning i Matematikk og Fysikk', 'I.F. Pedersen']
['08:15-10:00', 'Forelesning i Matematikk og Fysikk', 'Ø. Søvik']
['10:15-12:00', 'Forelesning i Matematikk og Fysikk', 'Ø. Søvik']
['12:15-14:00', 'Forelesning i Matematikk og Fysikk', 'Ø. Søvik']
期望的输出
['22.09.2020', '08:15-10:00', 'Forelesning i Matematikk og Fysikk', 'I.F. Pedersen']
['24.09.2020', '08:15-10:00', 'Forelesning i Matematikk og Fysikk', 'Ø. Søvik']
['21.09.2020', '10:15-12:00', 'Forelesning i Matematikk og Fysikk', 'Ø. Søvik']
['23.09.2020', '12:15-14:00', 'Forelesning i Matematikk og Fysikk', 'Ø. Søvik']
这是我目前所尝试的
import requests
from bs4 import BeautifulSoup
import datetime
today = datetime.date.today()
year, week_num, day_of_week = today.isocalendar() # DOW = day of week
URL = "http://timeplan.uit.no/emne_timeplan.php?sem=20h&module[]=TEK-0002-1#week-38"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
results = soup.find(id="week-{}".format(week_num), class_="div_week")
# print(results.prettify())
lectures = []
for name in results.find_all("td", class_="object-cell"):
title = name.find("span", class_="act-desc").get_text()
if "forelesning" in title.lower():
time = name.find("td", class_="object-cell-1-0").get_text()
lecturer = name.find("a", class_="staff_url").get_text()
lectures.append([time, title, lecturer])
rows = results.find("table").find("tbody").find_all("tr")
for lecture in lectures:
print(lecture)
【问题讨论】:
-
您应该共享此页面或部分的 HTML,它可以帮助找到适合的算法
-
我认为在实际页面上使用
CTRL+I检查它会更容易吗? HTML 与大多数现代网站一样,只是一堆无休止的表格行和列元素,所以我认为仅粘贴代码不会有太多收获。 -
您在表格中的数据是形成如下形式:
<table><tr><th>...</th></tr> <tr><td>...</td></tr></table>还是以其他方式完成? -
是的。我刮了
<div id="week-39"> .. </div>和whitin 这是一张表,例如<table><tr><th>...</th></tr> <tr><td>...</td></tr></table>但是,当我尝试提取行时,我得到了27 行的混乱或一些没有给我任何工作的东西。
标签: html python-3.x datetime beautifulsoup