Python 2.7 Beautifulsoup标记。getText()提供空值

Python 2.7 Beautifulsoup标记。getText()提供空值,python-2.7,beautifulsoup,Python 2.7,Beautifulsoup,我正在从span中提取st类 使用以下代码: address = "http://www.google.com/search?q=%s&num=50&hl=en&start=0" % (urllib.quote_plus(query)) request = urllib2.Request(address, None, {'User-Agent':'Mosilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/53

我正在从span中提取st类 使用以下代码:

  address = "http://www.google.com/search?q=%s&num=50&hl=en&start=0" % (urllib.quote_plus(query))
request = urllib2.Request(address, None, {'User-Agent':'Mosilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11'})
urlfile = urllib2.urlopen(request)
page = urlfile.read()
  soup = BeautifulSoup(page)



divg=soup.findAll('div',attrs={'class':'g'})

for li in divg:
    try:
        print "\n\n"

        print "Link :"
        print li.find('h3').find('a')['href']

        print "Title "
        title=(li.find('h3',attrs={'class':'r'}))

        print title.getText()

        print "Body"
        body=(li.find('span',attrs={'class':'st'}))

        print body.getText()



    except:
        continue

print len(divg)
有关部门如下:

<div class="g">
<!--m-->
<div class="rc" data-hveid="53">
    <h3 class="r">
        <a
            href="/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=45&amp;cad=rja&amp;uact=8&amp;ved=0ahUKEwim0sfq6KnMAhVTCY4KHTEuD7w4KBAWCDYwBA&amp;url=http%3A%2F%2Fwww.ncbi.nlm.nih.gov%2Fpmc%2Farticles%2FPMC2658273%2F&amp;usg=AFQjCNGPmCR8qk2Zu2W0Yx4tgZV2vcLTSQ&amp;sig2=bF_cyrQY1qA5G3c-ZY8Cyg&amp;bvm=bv.119745492,d.c2E"
            onmousedown="return rwt(this,'','','','45','AFQjCNGPmCR8qk2Zu2W0Yx4tgZV2vcLTSQ','bF_cyrQY1qA5G3c-ZY8Cyg','0ahUKEwim0sfq6KnMAhVTCY4KHTEuD7w4KBAWCDYwBA','','',event)"
            data-href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2658273/">The
            “4‐hour target”: emergency nurses' views - NCBI</a>
    </h3>
    <div class="s">
        <div>
            <div class="f kv _SWb" style="white-space: nowrap">
                <cite class="_Rm bc">www.ncbi.nlm.nih.gov › NCBI ›
                    Literature › PubMed Central (PMC)</cite>
                <div class="action-menu ab_ctl">
                    <a class="_Fmb ab_button" href="#" id="am-b44"
                        aria-label="Result details" aria-expanded="false"
                        aria-haspopup="true" role="button"
                        jsaction="m.tdd;keydown:m.hbke;keypress:m.mskpe"
                        data-ved="0ahUKEwim0sfq6KnMAhVTCY4KHTEuD7w4KBDsHQg4MAQ"><span
                        class="mn-dwn-arw"></span></a>
                    <div class="action-menu-panel ab_dropdown" role="menu"
                        tabindex="-1"
                        jsaction="keydown:m.hdke;mouseover:m.hdhne;mouseout:m.hdhue"
                        data-ved="0ahUKEwim0sfq6KnMAhVTCY4KHTEuD7w4KBCpHwg5MAQ">
                        <ol>
                            <li class="action-menu-item ab_dropdownitem" role="menuitem"><a
                                class="fl"
                                href="/search?biw=1024&amp;bih=738&amp;q=related:www.ncbi.nlm.nih.gov/pmc/articles/PMC2658273/+target+breach+2005&amp;tbo=1&amp;sa=X&amp;ved=0ahUKEwim0sfq6KnMAhVTCY4KHTEuD7w4KBAfCDowBA">Similar</a></li>
                        </ol>
                    </div>
                </div>
            </div>
            <div class="f slp">
                by A Mortimore - &lrm;2007 - &lrm;<a class="fl"
                    href="https://scholar.google.co.in/scholar?biw=1024&amp;bih=738&amp;bav=on.2,or.r_cp.&amp;bvm=bv.119745492,d.c2E&amp;um=1&amp;ie=UTF-8&amp;lr&amp;cites=3213296797661648681"
                    onmousedown="return rwt(this,'','','','45','AFQjCNHE8YfvgTyRDBVn4TU3jtu4KUs-nQ','6JIlCuL7509JtYLCnAkMcA','0ahUKEwim0sfq6KnMAhVTCY4KHTEuD7w4KBDOAgg8MAQ','','',event)">Cited
                    by 49</a> - &lrm;<a class="fl"
                    href="https://scholar.google.co.in/scholar?biw=1024&amp;bih=738&amp;bav=on.2,or.r_cp.&amp;bvm=bv.119745492,d.c2E&amp;um=1&amp;ie=UTF-8&amp;lr&amp;q=related:KdeFpmnslyxTsM:scholar.google.com/"
                    onmousedown="return rwt(this,'','','','45','AFQjCNHZJGbmVUicvi92tJNi69S5XgOGwQ','Zd8ZJ2OBi7nF6vwhTNg2jg','0ahUKEwim0sfq6KnMAhVTCY4KHTEuD7w4KBDPAgg9MAQ','','',event)">Related
                    articles</a>
            </div>
            <span class="st">Prior to the <em>target</em>, the emergency
                department (ED) included in this study had ..... be <em>breached</em>
                (letter) BMJ <em>2005</em>,
                http://www.bmj.com/cgi/eletters/330/7501/1188#&nbsp;...
            </span>
            <div class="_Tib">You visited this page on 25/4/16.</div>
        </div>
    </div>
</div>
<!--n-->

www.ncbi.nlm.nih.gov›ncbi›
文献›公共医学中心(PMC)
  • 由莫蒂莫尔-lrm;2007年-&lrm;-&lrm; 在袭击目标之前,紧急情况发生了 本研究所包括的教育署。。。。。违反 (信)BMJ 2005, http://www.bmj.com/cgi/eletters/330/7501/1188# ... 您于2016年4月25日访问了此页面。

    但是我得到了一个空白的结果。 在大多数情况下,代码运行良好,但在某些情况下,它会给出空白输出

    在大多数情况下,代码运行良好,但在某些情况下,它会给出空白输出

    这是因为除了常规的搜索结果外,类为
    g
    的元素还可以表示图像缩略图。要将搜索仅限于常规搜索结果,我需要使用
    class=“srg”
    div
    元素中查找它们:

    请注意,我假设您正在使用,并且您的导入是:

    from bs4 import BeautifulSoup
    
    您可能还需要使用utf-8对打印文本进行编码:

    print body.text.encode("utf-8")
    
    在大多数情况下,代码运行良好,但在某些情况下,它会给出空白输出

    这是因为除了常规的搜索结果外,类为
    g
    的元素还可以表示图像缩略图。要将搜索仅限于常规搜索结果,我需要使用
    class=“srg”
    div
    元素中查找它们:

    请注意,我假设您正在使用,并且您的导入是:

    from bs4 import BeautifulSoup
    
    您可能还需要使用utf-8对打印文本进行编码:

    print body.text.encode("utf-8")
    


    什么是
    li
    ?为什么
    li.find('span',attrs={class':'st'})
    这个被括号包围?我正在解析google
    divg=soup.findAll('div',attrs={class':'g'})
    对于divg:@ashwinbhy中的li:@ashwinbhy你在解析
    findAll('div'
    还是
    findAll('span'
    ?您已经说过了。首先我在解析div,在每个div中我都在解析span。li包含解析div的结果集。@ashwinbhy您能发布到目前为止的完整代码吗?谢谢。什么是
    li
    ?为什么是
    li.find('span',attrs={'class':'st'))
    divg=soup.findAll('div',attrs={'class':'g'})divg中的li:@ashwinbhy您是在解析
    findAll('div'
    还是
    findAll('span'
    ?两个都说了。首先我在解析div,在每个div中我都在解析span。li包含解析div的结果集。@ashwinbhy你能发布你到目前为止的完整代码吗?谢谢。我尝试了相同的方法,但它不起作用。我已经用div@ashwinbhy以下是我执行的操作:。我尝试处理异常关于getText()的讨论下面是我得到的结果:
    'charmap'编解码器无法对位置4中的字符u'\u201c'进行编码:字符映射到
    @ashwinbhy您正在使用的
    查询的值是多少?目标漏洞2005我尝试了相同的方法,但它不起作用。我已经用div@ashwinbhy以下是我执行的操作:。我尝试在getText()下面是我得到的:
    'charmap'编解码器无法对位置4中的字符u'\u201c'进行编码:字符映射到
    @ashwinbhy您正在使用的
    查询
    的值是多少?目标漏洞2005