在尝试学习如何使用Python进行web抓取时,我从这个http://bramatno8.kvartersmenyn.se/获取了一份午餐菜单
页面的构建方式如下:
<div class="menu">
<strong>Monday<br></strong>
<br>
Food 1<br>
Food 2
<br><br>
<strong>Tuesday<br></strong>
<br>
Food 3<br>
Food 4
<br><br>
<strong>Wednesday<br></strong>
<br>
Food 5<br>
Food 6
<br><br>
<strong>Thursday<br></strong>
<br>
Food 7<br>
Food 8
<br><br>
<strong>Friday<br></strong>
<br>
Food 9<br>
Food 10
<br><br>
</div>
到目前为止我得到的是:
import requests
from bs4 import BeautifulSoup
url = 'http://lunchmenu.com'
fetchlunch = requests.get(url)
soup = BeautifulSoup(fetchlunch.text, 'html.parser')
menu = soup.findAll(class_='menu')[0]
for br in menu.find_all('br'):
br.replace_with('\n')
print(menu.get_text())
所以这将把一周的整个菜单打印在一个部分。你知道吗
我想做的就是拿到一天的菜单。i、 如果是星期二,只显示星期二的菜单。所以我想我需要有一个数组的结果,然后拉菜单的一天?你知道吗
一种方法是找到具有匹配日内容的
<strong>
标记,然后使用.next_siblings
遍历食物,直到找到另一个<strong>
或耗尽兄弟姐妹。我使用了lxml
解析器,但这也适用于html.parser
。你知道吗在您的示例DOM中(我调整了食物以明确它的工作原理):
输出:
这里是第一个直播网站https://www.kvartersmenyn.se/rest/15494。请注意扩展字符编码和lambda,以便在
<b>
标记中有额外内容时匹配工作:输出:
最后,这是您的第二个实时站点http://bramatno8.kvartersmenyn.se/ . 所有这些网站都有不同且不一致的结构,所以不清楚是否有一个万能的子弹。我怀疑这些菜单是由不了解文档结构的人手工编写的,因此需要一些工作来处理对页面的任意更新。你知道吗
下面是:
输出:
相关问题 更多 >
编程相关推荐