我在Python下使用BeautifulSoup进行了大量的数据抓取和清理工作,并且经常将其追加.text.strip()到soup.find命令中。例:foo_stuff = soup.find("foo").text.strip()
在某些情况下,a soup.find找不到任何东西,结果.text.strip()中断了。正如我所看到的,我可以通过几种方法来处理:
.find总是返回某些内容的查询- 我不是一个足够聪明的人,无法以一种简洁的方式设计这样的查询。.text.strip()- 代码很难看。.myfind执行类似操作的命令- 这涉及到我修补事物并可能抛弃协作者。那里的其他人是否有更好/更聪明的解决方案来解决此问题?
编辑:现在我正在使用无聊的ol'函数来尝试/除外.text.strip():
def text_strip(soup_search):
if soup_search != None:
return soup_search.text.strip()
else:
return ""
Run Code Online (Sandbox Code Playgroud) 我正在解析显示商品数据的网站上的网页.这些物品有大约20个可能会或可能不会发生的字段 - 例如:价格,数量,上次购买,高,低等.
我目前正在使用一系列命令; 大约20行soup.find('div',{'class':SOME_FIELD_OF_INTEREST})寻找每个单独的感兴趣的领域.(有些人在div,span,dd,等等,所以它很难只是做一个soup.find_all('div')命令.)
我的问题:是否有一种优雅的方式try和except所有内容,以便查看所述代码可以更紧凑或简洁?现在,示例行看起来像:
try:
soup.find('div', {'id':'item-pic'}).img["src"]
except:
""
Run Code Online (Sandbox Code Playgroud)
我希望将所有内容组合在一起.我不认为我可以在语法上运行try : <line of code> except: <code>,而且我不确定如何编写一个try_command(soup.find('div',{'id':'item-pic'}).img["src"])没有实际运行命令的函数.
我很想知道是否有人有任何建议(包括:"这不可能/不实用,继续前进").:)
编辑:在谈了一下后,我想我想看看内联异常处理的好习惯是什么,如果这是正确的路线.