我正在尝试从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'
答案 0 :(得分:0)
price_buy_span
是None
。它是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 = ""