【问题标题】:BeautifulSoup returns empty list - other parsers are causing Python to errorBeautifulSoup 返回空列表 - 其他解析器导致 Python 出错
【发布时间】:2017-12-13 14:43:45
【问题描述】:

我确信这与许多其他 SO 帖子非常接近,但我无法针对我所看到的问题定制这些问题和答案。

当我运行下面显示的代码时,BeautifulSoup 正在返回 []。我一直在搜索有关 SO 的信息,并看到这篇关于解析器和已知错误的文章:Html parsing with Beautiful Soup returns empty list。但是当我尝试其他解析器时,我得到一个错误:

Couldn't find a tree builder with the features you requested: lxml.

我在 Macbook Pro 上使用 Python 2.7.10。有谁知道让不同的解析器工作的方法?或者即使解析器有问题?该站点本身不会将类名分配给div 标签,所以下面只是尝试返回一些东西。

import urllib2, base64, csv
from bs4 import BeautifulSoup

request = urllib2.Request("http://www.oklahomacounty.org/assessor/Searches/AN-R_HistoricalView.asp?Accountno=R120682380")
result = urllib2.urlopen(request)
soup = BeautifulSoup(result.read(), 'html.parser')
div=soup.findAll('div')
print div

【问题讨论】:

  • Couldn't find a tree builder with the features you requested: lxml. - 这个错误听起来就像你没有安装 lxml 库。
  • 如果网站没有分配任何div 类,你为什么期望它返回一些东西而不是一个空列表?
  • 网站使用div标签,但标签内没有class name属性。

标签: python parsing beautifulsoup


【解决方案1】:

BeautifulSoup 报告页面上没有<div> 标记,因为页面上没有没有<div> 标记。如果您实际查看相关 URL 的内容,您会看到:

<html>
<head>
<META NAME="robots" CONTENT="noindex,nofollow">
<script src="/_Incapsula_Resource?SWJIYLWA=2977d8d74f63d7f8fedbea018b7a1d05">
</script>
<script>
(function() { 
var z="";var b="7472797B766172207868723B76617220743D6E6577204461746528292E67657454696D6528293B766172207374617475733D227374617274223B7661722074696D696E673D6E65772041727261792833293B77696E646F772E6F6E756E6C6F61643D66756E6374696F6E28297B74696D696E675B325D3D22723A222B286E6577204461746528292E67657454696D6528292D74293B646F63756D656E742E637265617465456C656D656E742822696D6722292E7372633D222F5F496E63617073756C615F5265736F757263653F4553324C555243543D363726743D373826643D222B656E636F6465555249436F6D706F6E656E74287374617475732B222028222B74696D696E672E6A6F696E28292B222922297D3B69662877696E646F772E584D4C4874747052657175657374297B7868723D6E657720584D4C48747470526571756573747D656C73657B7868723D6E657720416374697665584F626A65637428224D6963726F736F66742E584D4C4854545022297D7868722E6F6E726561647973746174656368616E67653D66756E6374696F6E28297B737769746368287868722E72656164795374617465297B6361736520303A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A2072657175657374206E6F7420696E697469616C697A656420223B627265616B3B6361736520313A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A2073657276657220636F6E6E656374696F6E2065737461626C6973686564223B627265616B3B6361736520323A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A2072657175657374207265636569766564223B627265616B3B6361736520333A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A2070726F63657373696E672072657175657374223B627265616B3B6361736520343A7374617475733D22636F6D706C657465223B74696D696E675B315D3D22633A222B286E6577204461746528292E67657454696D6528292D74293B6966287868722E7374617475733D3D323030297B706172656E742E6C6F636174696F6E2E72656C6F616428297D627265616B7D7D3B74696D696E675B305D3D22733A222B286E6577204461746528292E67657454696D6528292D74293B7868722E6F70656E2822474554222C222F5F496E63617073756C615F5265736F757263653F535748414E45444C3D313839303437323435373134393733353237352C31353133353632323135303337343937323532352C31373438323130343134383630313233363937352C333731363038222C66616C7365293B7868722E73656E64286E756C6C297D63617463682863297B7374617475732B3D6E6577204461746528292E67657454696D6528292D742B2220696E6361705F6578633A20222B633B646F63756D656E742E637265617465456C656D656E742822696D6722292E7372633D222F5F496E63617073756C615F5265736F757263653F4553324C555243543D363726743D373826643D222B656E636F6465555249436F6D706F6E656E74287374617475732B222028222B74696D696E672E6A6F696E28292B222922297D3B";for (var i=0;i<b.length;i+=2){z=z+parseInt(b.substring(i, i+2), 16)+",";}z = z.substring(0,z.length-1); eval(eval('String.fromCharCode('+z+')'));})();
</script></head>
<body>
<iframe style="display:none;visibility:hidden;" src="//content.incapsula.com/jsTest.html" id="gaIframe"></iframe>
</body></html>

这里没有&lt;div&gt;标签;页面内容是通过 JavaScript 和 iframe 的某种组合生成的。如果你想爬取这个网站,你需要的不仅仅是 BeautifulSoup。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多