首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无需询问用户和密码即可从网页和身份验证中获取<span>值

无需询问用户和密码即可从网页和身份验证中获取<span>值
EN

Stack Overflow用户
提问于 2015-11-16 17:43:52
回答 1查看 103关注 0票数 0

我在Windows上有这个视频监控软件,它有浏览器远程访问和用户/密码身份验证,在PC的IP上。(我也可以远程查看,因为我有公网IP)。

我检查了浏览器UI中的代码,并希望获得这些跨度值(liveCameraCounttotalCameraCount):

我使用lime代码,这是工作,但回复如下:

代码语言:javascript
复制
None
None
ON  

虽然它应该是

代码语言:javascript
复制
2
2
ON

(我也尝试过使用time.sleep()让页面加载,但没有成功)

代码语言:javascript
复制
from bs4 import BeautifulSoup
import urllib
import urllib2
import base64

url = "http://my.pc.ip.address:port"
username = "myuser"
password = "mypass"

handle = urllib2.Request(url)
authheader =  "Basic %s" % base64.encodestring('%s:%s' % (username,password))

data = urllib.urlopen(url)
soup = BeautifulSoup(data, "html.parser")

cameras = soup.findAll('span')
for span in cameras:
    print span.string

我也在尝试自动登录,而不是每次它都会问:

代码语言:javascript
复制
Enter username [for my.pc.ip.address:port]:------
Enter password for username at [for my.pc.ip.address:port]:-----

编辑1:

好的。这很奇怪。如果我按下F12,我可以在发布的图像中看到里面的值,但如果我按下CRTL +U,我会看到这个代码(没有值)。我不明白:

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">


<head>
     <script>
    var isMobile =  navigator.userAgent.match(/(iPhone|iPod|Android|BlackBerry)/);
if(isMobile){
    window.location = '/mobile/';
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Sighthound</title>

  <link rel="stylesheet" href="/css/sighthound-desktop.css" />

<style type="text/css">
    #liveTime{
        margin-left: 6px;
    }

    .views {
        margin-right: 6px;
    }
</style>

  <!-- Favicons and touch icons -->
  <!-- For retina-display iPads -->
  <link href="/img/apple-touch-icon-xlarge.png" rel="apple-touch-icon-    precomposed" sizes="144x144" type="image/png"/>
  <!-- For retina-display iPhones -->
  <link href="/img/apple-touch-icon-large.png" rel="apple-touch-icon-precomposed" sizes="114x114" type="image/png"/>
  <!-- For iPad 1 -->
  <link href="/img/apple-touch-icon-medium.png" rel="apple-touch-icon-precomposed" sizes="72x72" type="image/png"/>
  <!-- For iPhone 3G, iPod Touch and Android -->
  <link href="/img/apple-touch-icon-small.png" rel="apple-touch-icon-precomposed" type="image/png"/>
  <!-- For Nokia -->
  <link href="/img/apple-touch-icon-small.png" rel="shortcut icon"/>
  <!-- For everything else -->
  <link href="/img/favicon.png" rel="shortcut icon" type="image/png"/>
  <link href="/img/favicon.ico" rel="shortcut icon" type="image/x-icon"/>  

</head>

<body>
    <script type="text/javascript"> if (!window.console) console = {log: function() {}}; </script>
    <script src="/js/jquery-2.0.3.min.js"></script>
    <script src="/js/handlebars.js"></script>
    <script src="/js/underscore-min.js"></script>
    <script src="/js/handlebars-extras.js"></script>
    <script src="/js/xmlrpc.js"></script>
    <script src="/js/sighthoundxmlrpc.js"></script>
    <script src="/js/sighthound.js"></script>
    <script src="/js/purl.js"></script>
    <script src="/js/moment.min.js"></script>
    <script src="/js/camera_display.js"></script>
    <script src="/js/all_cameras_control.js"></script>
    <script src="/js/common.js"></script>

     <div class="container">


        <div class="header">
            <div class="logo"><img src="img/logo.png" height="80" /></div><!-- End of Logo -->

            <div class="pageNav buttonBar">
                <a href="#" class="button active">Cameras</a>
                <a href="clips.html" class="button">Clips</a>
            </div><!-- End of Page Nav -->

            <div class="on-off buttonBar">
                <a id="allOffButton" href="#" class="button">Off</a>
                <a id="allOnButton" href="#" class="button">On</a>
            </div><!-- End of Buttons -->

            <div class="cameras">
                Cameras<br />
                <strong> <span id="liveCameraCount"></span> / <span id="totalCameraCount"></span> <span class="expressive">ON</span></strong>
            </div><!-- Camera -->

        </div><!-- End of Header -->



        <div class="content">

            <div class="contextMenu">

                <div id="liveTime" class="date"></div><!-- End of Date -->


                <!--<div class="fullscreen buttonBar">
                    <a href="" class="buttonIcon"><img src="img/iconFullscreen.png" width="18" /></a>
                </div>--><!-- End of Context Fullscreen -->


                <div class="views buttonBar">
                    <!--<a id="view1up" href="#" class="button viewButton"<img src="img/icon1upBlue.png" /></a>-->
                <a id="view2up" href="#" class="button viewButton"><img src="img/icon2upBlue.png" /></a>
                <a id="view3up" href="#" class="button viewButton"><img src="img/icon3upBlue.png" /></a>
                <a id="view4up" href="#" class="button active viewButton"><img src="img/icon4upWhite.png" /></a>
            </div><!-- End of Context Views -->


        </div><!-- End of Context -->

        <div id="cameraGrid"></div>

        <script id="cameraGridTemplate" type="text/x-handlebars-template">
            {{#everyNth cameras {(columns)}}}
                {{#if isModZeroNotFirst}}
                    </div>
                {{/if}}

                {{#if isModZero}}
                    <div class="videos">
                {{/if}}

                <div class="video-{(columns)}up cameraVideo">

                    <a href="live.html?camera={{name}}&live={{live}}&cameraindex={{index}}">

                        <div class="videoImgContainer"
                            data-camera_index="{{index}}">
                            <!-- Image stream content is built by camera_display.js -->
                        </div>

                        <div class="cameraTitle">
                            <span>{{name}}<span>
                        </div>

                    </a>

                </div>

                {{#if isLast}}
                    </div>
                {{/if}}
            {{/everyNth}}

        </script>

    </div><!-- End of Content -->



</div><!-- End of Container -->

<script src="/js/index.js" type="text/javascript"></script>
</body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2015-11-16 18:30:40

您可以尝试将string替换为text,如下所示:

代码语言:javascript
复制
data = """<strong>
<span id="liveCameraCount">2</span>
" / "
<span id="totalCameraCount">2</span>
<span class="expressive">ON</span>
</strong>
</div>
"""

from bs4 import BeautifulSoup
soup = BeautifulSoup(data, "html.parser")

for span in soup.findAll('span'):
    print span.text

这将为您的小示例显示以下内容:

代码语言:javascript
复制
2
2
ON

对于完整的超文本标记语言,前两个<span>是空的,因此将打印空字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33732321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档