找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 196|回复: 4

[求助] 如何解决KeyError: 'name'

4

主题

7

帖子

7

积分

贫民

积分
7
小小白啊 发表于 2018-11-4 11:42:25 | 显示全部楼层 |阅读模式
如何解决KeyError: 'name'
QQ图片20181104114106.png
QQ图片20181104114113.png
回复

使用道具 举报

4

主题

7

帖子

7

积分

贫民

积分
7
小小白啊  楼主| 发表于 2018-11-4 11:48:53 | 显示全部楼层
源码
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()  
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
医然 发表于 2018-11-8 16:37:23 | 显示全部楼层
把这一行:anchor = {'nema':name,'nember':nember}   的  nema  改成 name
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
医然 发表于 2018-11-8 16:41:30 | 显示全部楼层
发表回复要填两个验证码,网站管理者怎么想的
回复 支持 反对

使用道具 举报

4

主题

7

帖子

7

积分

贫民

积分
7
小小白啊  楼主| 发表于 2018-11-11 15:41:29 | 显示全部楼层
医然 发表于 2018-11-8 16:37
把这一行:anchor = {'nema':name,'nember':nember}   的  nema  改成 name

谢啦,之前解决了,就没有来看论坛了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表