Python MechanicalSoup复杂的html表
我完全不喜欢机械组和网络垃圾。 我一直在分析一个html时间表,并将其制作成icalendar(ics)文件,以便在手机上使用。(我已经成功地做到了,耶) 现在为了让它工作,我下载了时间表网站的html,一旦我选择了我的时间表。现在我需要使用Python来实际导航到时间表Python MechanicalSoup复杂的html表,python,html,web-scraping,python-requests,mechanicalsoup,Python,Html,Web Scraping,Python Requests,Mechanicalsoup,我完全不喜欢机械组和网络垃圾。 我一直在分析一个html时间表,并将其制作成icalendar(ics)文件,以便在手机上使用。(我已经成功地做到了,耶) 现在为了让它工作,我下载了时间表网站的html,一旦我选择了我的时间表。现在我需要使用Python来实际导航到时间表 以下是我到目前为止的代码(我被卡住了,因为HTML太乱了,我不知道怎么做,MechanicalSoup的文档还没有那么大): 请参见此处的HTML:( 我想做以下工作: td class=“FilterPanel” #
以下是我到目前为止的代码(我被卡住了,因为HTML太乱了,我不知道怎么做,MechanicalSoup的文档还没有那么大): 请参见此处的HTML:( 我想做以下工作:
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
非常感谢您的帮助!选择表单的参数是一个CSS选择器。如果您只有一个表单,那么
“表单”
就可以做到这一点(MechanicalSoup的下一个版本实际上会将此作为默认参数)。否则,请使用浏览器的开发工具,例如Firefox的右键单击->检查元素->右键单击->复制->CSS选择器,这可能是一个很好的起点
在您的情况下,即使有一个有趣的布局,也只有一种形式,因此:
browser.select_form("form")
不幸的是,您所指向的页面部分是用JavaScript生成的(您正在搜索的select
元素没有出现在通过解析页面获得的soup对象中)。请查看MechanicalSoup从您的页面中看到了什么
browser.launch_browser()
:-(.您可以通过自己创建缺少的控件来解决此问题。“MechanicalSoup的文档还没有那么大”:当您发布问题时,这是非常正确的。现在情况有所不同:MechanicalSoup的文档还没有那么大):
browser.launch_browser()