我的问题:直到03/31/2018我的函数get_settldays()返回了预期的日期值。从那以后,settlDays.contents是空的; 但是在Mozilla浏览器中检查此标记,有预期的内容
import sys, mechanicalsoup, re, datetime
def get_settldays(soup):
settlDays = soup.find('select', id="cmeTradeDate")
settlDays = re.findall('\d\d/\d\d/\d\d\d\d',str(settlDays.contents))
return [datetime.datetime.strptime(adat, '%m/%d/%Y') for adat in settlDays]
url = "http://www.cmegroup.com/trading/equity-index/us-index/e-mini-sandp500_quotes_settlements_futures.html"
browser = mechanicalsoup.StatefulBrowser()
try:
browser.open(url)
except:
print('Error:', str(sys.exc_info()[1]))
browser.close()
quit()
soup = browser.get_current_page()
settlDays = soup.find('select', id="cmeTradeDate")
print('\nsettlDays', settlDays) #remains empty??
print('\nsettlDays.content', settlDays.contents)
browser.session.close()
browser.close()
有没有想法为什么settlDays.contents仍然是空的?
答案 0 :(得分:0)
使用javascript填充\n
的内容。没有javascript,内容只是n > 0
而不是日期选项列表。您可以通过进入设置 - >在Chrome等浏览器中验证这一点。内容设置 - > JavaScript并将“允许”切换到关闭位置,然后重新加载页面。
由于MechanicalSoup不支持javascript,您可能需要考虑使用Selenium之类的工具。