首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MechanicalSoup棘手的html表

MechanicalSoup棘手的html表
EN

Stack Overflow用户
提问于 2017-10-08 18:11:07
回答 1查看 864关注 0票数 1

我对MechanicalSoup和网络抓取是完全陌生的。我一直致力于解析html时间表,并将其放入icalendar (ics)文件中,以便在移动平台上运行。(我成功地做到了,耶)

现在,为了使它工作,我下载了时间表网站的html,一旦我选择了我的时间表。现在,我需要使用Python实际导航到时间表。

到目前为止,我的代码是这样的(因为HTML太混乱了,我不知道怎么做,而且MechanicalSoup的文档还没有那么大):

代码语言:javascript
复制
    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,我想做以下工作:

代码语言:javascript
复制
    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。

我们非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-18 12:51:06

select_form的参数是CSS选择器。如果您只有一个表单,那么"form"可以完成这个任务(下一个版本的MechanicalSoup实际上将此作为默认参数)。否则,使用浏览器的开发工具,例如火狐有右击->检查元素->右击->复制-> CSS选择器,这可能是一个很好的起点。

在你的例子中,即使有一个有趣的布局,也只有一种形式,所以:

代码语言:javascript
复制
browser.select_form("form")

不幸的是,您所指向的页面部分是用JavaScript生成的(您正在搜索的select元素没有出现在解析页面获得的soup对象中)。查看MechanicalSoup在您的页面中看到了什么

代码语言:javascript
复制
browser.launch_browser()

-(。您可以通过使用控制自己创建缺少的控件来解决这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46634416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档