如何解决 KeyError: 'name'

2018-11-04 11:46:17 +08:00
 15874103329
import re
from urllib import request


class Spider():

url = 'https://www.panda.tv/cate/lol?pdt=1.24.s1.3.15r0uaprii3'

root_pattern = ('<div class="video-info">([\s\S]*?)</div>')
name_pattern = ('</i>([\s\S]*?)</span>')
number_pattern = ('<span class="video-number">([\s\S]*?)</span>')

def __fetch_content(self):
r = request.urlopen(Spider.url)
htmls = r.read()
htmls = str(htmls,encoding='utf-8')
return htmls

def __analysis(self,htmls):
root_html = re.findall(Spider.root_pattern,htmls)
anchors = []
for html in root_html:
name = re.findall(Spider.name_pattern,html)
nember = re.findall(Spider.number_pattern,html)
anchor = {'nema':name,'nember':nember}
anchors.append(anchor)

return anchors

def __refine(self,anchors):
l = lambda anchor: {
'name':anchor['name'][0].strip(),
'nember':anchor['nember'][0]
}
return map(l , anchors)

def __sort(self,anchors):
anchors = sorted(anchors,key=self.__sort_seed)
return anchors

def __sort_seed(self,anchor):
return anchor['nember']

def __show(self,anchors):
for anchor in anchors:
print(anchor['name'] + '————' + anchor['nember'])

def go(self):
htmls = self.__fetch_content()
anchors = self.__analysis(htmls)
anchors = list(self.__refine(anchors))
anchors = self.__sort(anchors)
self.__show(anchors)



spider = Spider()
spider.go()
4013 次点击
所在节点    Python
12 条回复
0312birdzhang
2018-11-04 11:59:43 +08:00
'name':anchor['name'][0].strip()

没有 name 这个键值呗,你的程序需要多做一些异常判断。
没仔细看,md 是支持代码格式化的,你这样贴上来都没用看的欲望了
15874103329
2018-11-04 12:02:38 +08:00
我刚刚学纯小白,老哥能加个 QQ 或者微信么,我截了图,这里还不能发图
laike9m
2018-11-04 12:03:56 +08:00
@15874103329 人家都给你解释得这么明白了,就没必要加 qq 微信打扰了吧
0312birdzhang
2018-11-04 12:04:31 +08:00
@15874103329 #2 不能,markdown 了解一下,不能发图我这个 doge 是哪里来的

爬虫的话用 bs4 或者其他的更方便
hsfzxjy
2018-11-04 12:20:45 +08:00
你的 name 拼成 nema 了
gstqc
2018-11-04 12:43:19 +08:00
这几天看到两个拼写错误的帖子了😂😂😂
Kylin30
2018-11-04 13:23:46 +08:00
建议每次有拼写错误或者不细心又犯懒的时候就用力扇自己一耳光,可以加深记忆。
15874103329
2018-11-04 13:32:50 +08:00
沃日,真的是单词错了,已经狠狠扇了自己两巴掌,感谢各位老哥了
likuku
2018-11-04 14:12:49 +08:00
以作伸手党为耻...
luomu24
2018-11-04 14:12:58 +08:00
啪啪啪,再帮你来两下。/doge
Rehtt
2018-11-04 15:37:45 +08:00
建议使用一些代码校验的插件
Ken999
2018-11-05 13:44:48 +08:00
建议你用 pycharm,可以有单词拼写检查,让英语小白少出一些错!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/504273

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX