python bs4属性错误

时间:2014-12-18 09:43:29

标签: android python

我正在尝试从Google Play商店抓取Android应用。我正在尝试使用以下链接中的代码:http://blog.singhanuvrat.com/tech/crawl-google-play-to-get-list-of-all-apps

但是当我运行代码时,我收到以下错误。任何人都可以帮我吗?

A fresh start ...
Type =  free  Category =  BOOKS_AND_REFERENCE
Traceback (most recent call last):
  File "textop.py", line 182, in <module>
    getApps( url )
  File "textop.py", line 159, in getApps
    apps, skipped_apps = getTopAppsData( url, start_idx, size, app_type )
  File "textop.py", line 147, in getTopAppsData
    app_details = getAppDetails( title.get( 'href' ) )
  File "textop.py", line 94, in getAppDetails
    price = price_buy_span.find_all( 'span' )[-1].get_text().strip()
AttributeError: 'NoneType' object has no attribute 'find_all'

2 个答案:

答案 0 :(得分:0)

price_buy_spanNone。它是None,因为上一行无法找到标记:

price_buy_span = soup.find( 'span', {'class' : 'price buy'} )

是因为页面中有(不再)这样的跨度。那个班级现在放在一个按钮上。

您必须调整代码才能使用当前页面的HTML,或者请博客作者修复他们的示例。

答案 1 :(得分:0)

通过Python中的异常处理来处理您的异常。
例如,

<script type="text/javascript"> setTimeout(function () { var myTag=document.getElementById('myDiv').getElementsByTagName('iframe'); var myTagContent = myTag.contentDocument || iframe.contentWindow.document; var myTagDiv = myTagContent.innerDoc.getElementById('iframeDiv'); if (myTagDiv === null) { document.getElementById("myDiv").style.display = "none"; } }, 500); </script>

或者您也可以使用if条件。

try: price_buy_span = soup.find( 'span', {'class' : 'price buy'} ) price = price_buy_span.find_all( 'span' )[-1].get_text().strip() except: price_buy_span = ""