Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的嵌套隐藏标记抓取_Python_Web Scraping_Beautifulsoup_Mechanize - Fatal编程技术网

python中的嵌套隐藏标记抓取

python中的嵌套隐藏标记抓取,python,web-scraping,beautifulsoup,mechanize,Python,Web Scraping,Beautifulsoup,Mechanize,首先,python和web抓取非常新 我有一页需要删掉。我查看了很多源代码,但无法找出删除嵌套隐藏标签的方法。该页面需要登录并能够获取可见数据,我的代码成功地执行了这些数据。但是,当涉及到在div标记中删除嵌套元素时,它找不到任何东西 HTML(onClick()事件之前) Python代码 import mechanize from bs4 import BeautifulSoup import urllib import http.cookiejar as cookielib from b

首先,python和web抓取非常新

我有一页需要删掉。我查看了很多源代码,但无法找出删除嵌套隐藏标签的方法。该页面需要登录并能够获取可见数据,我的代码成功地执行了这些数据。但是,当涉及到在
div
标记中删除嵌套元素时,它找不到任何东西

HTML(onClick()事件之前)

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
中的
跨度?

有许多方法可以提取内部隐藏元素,如span、src和alt标记

containers = page_soup.find("div",{"id":"topMenu"})
top_span=containers.find_all('span',class_='cSub')
print(len(top_span)
#len of spans is two
inner_span=top_span[0].find('span')
inner_span_text=inner_span.text
class_inside_inner_span=inner_span['class']

有关web抓取的更多详细信息,请参阅我的这篇文章:“

有很多方法可以提取内部隐藏元素,如span、src和alt-tag

containers = page_soup.find("div",{"id":"topMenu"})
top_span=containers.find_all('span',class_='cSub')
print(len(top_span)
#len of spans is two
inner_span=top_span[0].find('span')
inner_span_text=inner_span.text
class_inside_inner_span=inner_span['class']

有关网页抓取的更多详细信息,请参阅我的这篇文章:“

您是否尝试过简单的items=soup.select(“#topMenu[id='1']”),我想部分取决于您是否需要实际的页面操作来启用这些选项。它是空的。这就是我得到的:[]您可能需要一些类似selenium的东西,以便与页面进行交互。您期望的输出是什么?最里面的span@JackFleetinghave your try simply items=soup中的文本。选择(“#topMenu[id='1']”)我想部分取决于你是否需要一个实际的页面操作来启用这些选项。它是空的。这是我得到的:[]您可能需要类似selenium的东西,以便与页面交互。您的预期输出是什么?最里面的span@jackFleering中的文本当我打印此文件的长度时,它输出0。它仍然不知何故没有得到spanHi caitlin,我不知道你为什么得到span zero的len,但据我所知,你可能选择了错误的类名。我已经找到了使用Selenium的解决方案当我打印这个的长度时,它输出0。它仍然不知何故没有得到spanHi caitlin,我不知道你为什么得到span zero的len,但据我所知,你可能选择了错误的类名。我已经用selenium找到了解决方案
containers = page_soup.find("div",{"id":"topMenu"})
top_span=containers.find_all('span',class_='cSub')
print(len(top_span)
#len of spans is two
inner_span=top_span[0].find('span')
inner_span_text=inner_span.text
class_inside_inner_span=inner_span['class']