我试图从dd标签(用于标记不同的日期)之间的dd类中提取文本。我尝试了一种非常粗糙的方法,但效果不够一致
timeDiv = mezzrowSource.find_all("dd", class_="orange event-date")
eventDiv = mezzrowSource.find_all("dd", class_="event")
index = 0
for time in timeDiv:
returnValue[timeDiv[index].text] = eventDiv[index].text.strip()
if "8" in timeDiv[index+3].text or "4:30" in timeDiv[index+3].text:
break
index += 1
你知道吗 以这种方式枚举会导致太多来自其他人的文本大部分时间都在工作,但有时会从其他日期提取事件。在这里的来源,部分问题是粘贴在下面。有什么想法吗?你知道吗
<dt class="purple">Sun, September 30th, 2018</dt>
<dd class="orange event-date">4:30 PM to 7:00 PM</dd>
<dd class="event"><a href="/events/4094-mezzrow-classical-salon-with-david-oei"
class="event-title">Mezzrow Classical Salon with David Oei</a>
</dd>
<dd class="orange event-date">8:00 PM to 10:30 PM</dd>
<dd class="event"><a href="/events/4144-luke-sellick-ron-blake-adam-birnbaum"
class="event-title">Luke Sellick, Ron Blake & Adam Birnbaum</a>
</dd>
<dd class="orange event-date">11:00 PM to 1:00 AM</dd>
<dd class="event"><a href="/events/4099-ryo-sasaki-friends-after-hours"
class="event-title">Ryo Sasaki & Friends "After-hours"</a>
</dd>
<dt class="purple">Mon, October 1st, 2018</dt>
<dd class="orange event-date">8:00 PM to 10:30 PM</dd>
<dd class="event"><a href="/events/4137-greg-ruggiero-murray-wall-steve-little"
class="event-title">Greg Ruggiero, Murray Wall & Steve Little</a>
</dd>
<dd class="orange event-date">11:00 PM to 1:00 AM</dd>
<dd class="event"><a href="/events/4174-pasquale-grasso-after-hours"
class="event-title">Pasquale Grasso "After-hours"</a>
</dd>
预期输出的字典如下:{'4:30 PM to 7:00 PM':'Mezzrow classic Salon with David Oei','8:00 PM to 10:30 PM':'Greg Ruggiero,Murray Wall&Steve Little','11:00 PM to 1:00 AM':'Pasquale Grasso“下班后”}
如果我理解正确,您可以使用zip():
输出:
更新:
您希望从中获取数据的元素都是同级元素,即没有包含每组数据的元素,这使得按照您的需要对数据进行分组变得更加困难。唯一对您有利的是,带有日期的元素首先出现,然后是时间,然后是标题。时间和标题可以重复。所以这个方法选择了我们想要的所有元素并对它们进行迭代。在第一次迭代中,它将日期存储在一个字符串中,并创建一个包含时间和标题的元组列表。当它下次找到一个日期时,它会将日期和元组列表附加到字典中。在迭代结束时,它会将最终日期和元组列表附加到字典中。这有点混乱,但这是由于HTML中缺乏结构。你知道吗
输出:
然后从dict对象中选择所需的日期。你知道吗
相关问题 更多 >
编程相关推荐