MechanicalSoup 棘手的 html 个表格
MechanicalSoup tricky html tables
我对 MechanicalSoup 和网络抓取完全陌生。
我一直致力于解析 html 时间表并将其制作成 icalendar (ics) 文件以便在移动设备上获取它。 (我已经成功完成了,耶)。
现在为了让它工作,我在选择了时间表后下载了时间表站点的 html。现在我需要使用 Python 来实际导航到时间表。
到目前为止,这是我的代码(我卡住了,因为 HTML 太乱了,我不知道该怎么做,而且 MechanicalSoup 的文档还没有那么大):
import argparse
import mechanicalsoup
from getpass import getpass
browser = mechanicalsoup.StatefulBrowser(
soup_config={'features': 'lxml'},
raise_on_404=True,
user_agent='MyBot/0.1: mysite.example.com/bot_info',
)
browser.open("http://keaplan.kea.dk/sws/prodE2017/default.aspx")
browser.select_form(WHAT TO SELECT :D)
在这里查看 HTML :( http://keaplan.kea.dk/sws/prodE2017/default.aspx
我想执行以下操作:
td class=“FilterPanel” #go to the table containing this td
div id = pFilter #set value to BYG
div id = pObject #set value to BAKINT-2l
submit (which will redirect to the timetable i need)
并从提交的重定向下载 html。
非常感谢您的帮助!
select_form
的参数是一个 CSS 选择器。如果你只有一种形式,那么 "form"
就可以做到这一点(下一版本的 MechanicalSoup 实际上会将其作为默认参数)。否则,请使用浏览器的开发人员工具,例如 Firefox 具有右键单击 -> 检查元素 -> 右键单击 -> 复制 -> CSS 选择器,这可能是一个很好的起点。
在你的情况下,即使有一个有趣的布局,也只有一种形式,所以:
browser.select_form("form")
很遗憾,您指向的页面部分由 JavaScript 生成(您正在搜索的 select
元素未出现在通过解析页面获得的 soup 对象中)。使用
查看 MechanicalSoup 从您的页面看到的内容
browser.launch_browser()
:-(。您可以通过使用 new_control.
自行创建缺少的控件来解决此问题
我对 MechanicalSoup 和网络抓取完全陌生。 我一直致力于解析 html 时间表并将其制作成 icalendar (ics) 文件以便在移动设备上获取它。 (我已经成功完成了,耶)。
现在为了让它工作,我在选择了时间表后下载了时间表站点的 html。现在我需要使用 Python 来实际导航到时间表。
到目前为止,这是我的代码(我卡住了,因为 HTML 太乱了,我不知道该怎么做,而且 MechanicalSoup 的文档还没有那么大):
import argparse
import mechanicalsoup
from getpass import getpass
browser = mechanicalsoup.StatefulBrowser(
soup_config={'features': 'lxml'},
raise_on_404=True,
user_agent='MyBot/0.1: mysite.example.com/bot_info',
)
browser.open("http://keaplan.kea.dk/sws/prodE2017/default.aspx")
browser.select_form(WHAT TO SELECT :D)
在这里查看 HTML :( http://keaplan.kea.dk/sws/prodE2017/default.aspx 我想执行以下操作:
td class=“FilterPanel” #go to the table containing this td
div id = pFilter #set value to BYG
div id = pObject #set value to BAKINT-2l
submit (which will redirect to the timetable i need)
并从提交的重定向下载 html。
非常感谢您的帮助!
select_form
的参数是一个 CSS 选择器。如果你只有一种形式,那么 "form"
就可以做到这一点(下一版本的 MechanicalSoup 实际上会将其作为默认参数)。否则,请使用浏览器的开发人员工具,例如 Firefox 具有右键单击 -> 检查元素 -> 右键单击 -> 复制 -> CSS 选择器,这可能是一个很好的起点。
在你的情况下,即使有一个有趣的布局,也只有一种形式,所以:
browser.select_form("form")
很遗憾,您指向的页面部分由 JavaScript 生成(您正在搜索的 select
元素未出现在通过解析页面获得的 soup 对象中)。使用
browser.launch_browser()
:-(。您可以通过使用 new_control.
自行创建缺少的控件来解决此问题