在 for 循环中一行代码抛出异常,接着执行下一行代码如何实现?而不是跳过本次循环
我写的一个爬虫,读取书籍的信息,有的书只有部分数据有,所以造成有的对象不存在而出错。 我也想过在赋值之前先判断,但是感觉有点麻烦,想找找别的写法。 下面的代码中,如果 pubulisher 读取出错,那么后面的 author 他也不会读了直接跳下一个循环了
for i in rows:
try:
book = {}
tmp = i.find("h3", {"itemprop": "name"})
book['title'] = tmp.text.strip()
book['cover'] = i.find("img")['data-src']
book['url'] = lib_url+tmp.a['href']
book['publisher'] = i.find("a", {"title": "Publisher"}).text.strip()
book['author'] = i.find("a", {"itemprop": "author"}).text.strip()
detail = i.find("div", {"class": "bookDetailsBox"})
book['year'] = detail.find("div", {"class": "property_year"}).find(
"div", {"class": "property_value"}).text
book['language'] = detail.find("div", {"class": "text-capitalize"}).text
except AttributeError:
pass
print(book)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.