【发布时间】:2019-07-23 21:04:35
【问题描述】:
首先,python 和网络抓取非常新。
我有一个需要抓取的页面。我查看了很多资源,但无法弄清楚嵌套隐藏标签的抓取。该页面需要登录并能够获取我的代码成功执行的可见数据。但是,在抓取 div 标记中的嵌套元素时,它什么也找不到。
HTML(在 onClick() 事件之前)
<div id="topMenu" style="width: 1920px; position: relative; top: 46px;" onclick="menu(event);" oncontextmenu="javascript:if(!event.ctrlKey){return RightClickPopUp(event);}">
<span id="3" class="cSub" lcid="63" lccl="Item" style="visibility: hidden; display: none; top: 20px;">
<span id="1" menuname="Cancel" parentid="63" class="Menu01" showmenu="010">Cancel</span>
</span>
<span id="3" class="cSub" lcid="63" lccl="Item" style="visibility: hidden; display: none; top: 20px;">
<span id="1" menuname="Cancel" parentid="63" class="Menu01" showmenu="010">Cancel</span>
</span>
</div>
单击div(由多个按钮组成)后,第一个span 标记变为可见,然后跳转到相应的嵌套span 标记。我的问题是访问最里面的span中的文字。
HTML(在 onClick() 事件之后)
<div id="topMenu" style="width: 1920px; position: relative; top: 46px;" onclick="menu(event);" oncontextmenu="javascript:if(!event.ctrlKey){return RightClickPopUp(event);}">
<span id="3" class="cSub" lcid="63" lccl="Item" style="visibility: visible; display: inline; top: 20px;">
<span id="1" menuname="Cancel" parentid="63" class="Menu01" showmenu="010">Cancel</span>
</span>
<span id="3" class="cSub" lcid="63" lccl="Item" style="visibility: visible; display: inline; top: 20px;">
<span id="1" menuname="Cancel" parentid="63" class="Menu01" showmenu="010">Cancel</span>
</span>
</div>
Python 代码
import mechanize
from bs4 import BeautifulSoup
import urllib
import http.cookiejar as cookielib
from bs4 import BeautifulSoup as soup
cj = cookielib.CookieJar()
br = mechanize.Browser()
br.set_cookiejar(cj)
br.open("LOGIN_URL")
br.select_form(nr=0)
br.form['USER'] = 'un'
br.form['PASSWORD'] = 'pwd'
br.submit()
check = br.response().read()
print(check) //login success
my_url = br.open("URL_I_NEED_TO_SCRAPE").read()
page_soup = soup(my_url, "html.parser")
containers = page_soup.find("div",{"id":"topMenu"})
这段代码帮助我获得了div,但里面什么都没有。有没有办法获取当前隐藏在这个div 中的spans?
【问题讨论】:
-
您是否尝试过简单的 items = soup.select("#topMenu [id='1']") 我想部分取决于您是否需要在页面上进行实际操作以启用这些选择.
-
它是空的。这就是我得到的:[]
-
你可能需要像 selenium 这样的东西来与页面交互。
-
你的预期输出是什么?
-
最里面的 span @JackFleeting 内的文本
标签: python web-scraping beautifulsoup mechanize