myl*_*nid 2 python selenium beautifulsoup html-parsing web-scraping
我的部分 HTML 如下所示:
<div id="qryNav">
<form method="post" action="OffQryRedirector.jsp" id="form1" name="form1">
<input type="hidden" name="NextPage" value="7" />
<input type="submit" name="Action" id="oq-nav-begin" value="<<" />
<input type="submit" name="Action" id="oq-nav-prv" value="<" />
<span class="oq-nav-btwn">Page 1 of 4</span>
<input type="submit" name="Action" id="oq-nav-nxt" value=">" />
<input type="submit" name="Action" id="oq-nav-end" value=">>" />
</form>
<a href="OffQryForm.jsp" class="qryNav"><span>Start a New Search</span></a>
<!--<a href="javascript:history.back()" class="qryNav"><span>Modify Your Search</span> </a>-->
</div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试确定页数,然后移至下一页。我的代码如下所示 -
html = driver.page_source
soup = BeautifulSoup(html)
pages = soup.find_all('span', {'class': 'oq-nav-btwn'})[0].text.encode('ascii', 'ignore').strip().upper()
loc_of = pages.find('OF')
num_pages = int(pages[loc_of+2:].strip())
>>> print num_pages
4
span = soup.find_all('span', {'class': 'oq-nav-btwn'})
elem2 = span[0].find_next_sibling()
elem2.find_element_by_id("oq-nav-nxt")
Run Code Online (Sandbox Code Playgroud)
发布这个我正在尝试为 4 页中的每一个运行一个循环 - 1.. 4。但是当我使用
elem2.find_element_by_id("oq-nav-nxt").click()
Run Code Online (Sandbox Code Playgroud)
我得到标准的 selenium.common.exceptions.StaleElementReferenceException: Message: u'stale element reference: element is not connected to the page document\n (Session info: chrome=34.0.1847.131)\n (Driver info: chromedriver=2.9. 248315,平台=Windows NT 6.1 x86_64)'
元素可见。我不认为 try..catch..wait.. 是解决这个问题的方法..(我可能在这里错了。)
我也尝试用下面的代码做同样的事情 -
span = soup.find_all('span', {'class': 'oq-nav-btwn'})
elem2 = span[0].find_next_sibling()
>>> print elem2
<input id="oq-nav-nxt" name="Action" type="submit" value=">">
<input id="oq-nav-end" name="Action" type="submit" value=">>">
</input></input>
Run Code Online (Sandbox Code Playgroud)
但是我无法导航上面的 elem2 值,然后单击“oq-nav-nxt”按钮。
感谢您在这方面的帮助。
| 归档时间: |
|
| 查看次数: |
3154 次 |
| 最近记录: |