【发布时间】:2016-09-20 17:54:25
【问题描述】:
我想在我的服务器上使用 Python 自动执行在搜索栏中搜索关键字的过程。然而,搜索首先会返回一个免责声明,一旦被接受,结果就会实际显示出来。免责声明网站如下:
http://emma.msrb.org/Disclaimer.aspx
我已经检查了网站,这是我的初步代码:
browser = RoboBrowser(history=True)
browser.open(tradeinfo)
# tradeinfo = link to search result, i.e. http://emma.msrb.org/SecurityDetails/TradeActivity/ABF6AA894523779EDC8B751EB99959934
form = browser.get_forms()[0]
print form
<RoboForm __VIEWSTATE=somevalue, __VIEWSTATEGENERATOR=somevalue, __EVENTVALIDATION=somevalue,
ctl00$Masthead$UserAcct1$NextAction=,
ctl00$Masthead$UserAcct1$isPilotUser=False, ctl00$Masthead$searchTextBox=Enter CUSIP or Name,
ctl00$Masthead$headerSearchButton=,
ctl00$mainContentArea$disclaimerContent$yesButton=,
ctl00$mainContentArea$disclaimerContent$noButton=>
# Somevalue represents a string of characters (deleted for visual clarity)
然后我执行以下操作:
form['ctl00$mainContentArea$disclaimerContent$yesButton'].value ='Yes'
browser.submit_form(form)
browser.select('body')
但正文仍然不包含数据。我也尝试过机械化,结果相同。有没有办法在没有 Selenium 的情况下做到这一点,只使用 mechanize 或 RoboBrowser?如果是这样,我的脚本中缺少什么?
P.S:“接受”按钮的 html 脚本:
<input type="image"
name="ctl00$mainContentArea$disclaimerContent$yesButton"
id="ctl00_mainContentArea_disclaimerContent_yesButton"
data-jquerymobilestyle="false"
src="images/btnAccept.gif" alt="Accept" style="border-width:0px;">
【问题讨论】:
-
请问您为什么不想使用 Selenium?
-
Selenium 需要一个 firefox 窗口(在屏幕上或无头),目前两者都不能在我可用的 Unix 服务器上工作。所以我需要另辟蹊径。
标签: python html web-scraping mechanize robobrowser