• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

pycharm 运行显示报错(观看爬虫视频打得相同代码)go() missing 1 require

import refrom urllib import requestclass Spider():    # 将所需要的数据进行缩小范围:    url = 'http.tv/cate/lol?pdt=1.24.s1.3.2p03g5k38l9'#考虑问题:‘*’所有字符   ‘?’非贪婪  57min    ()组里的内容   即[\s\S]*?
里面的内容    root_pattern ='([\s\S]*?)
'    name_pattern = '</i>(\s\S*?)'    number_pattern = '(\s\S*?)'    # 定义一个私有方法(获取HTML内容)    def __fetch_content(self):        r = request.urlopen(Spider.url)# 实例中读取类变量的方法(读取url),需要从urllib引入request        htmls = r.read()#读取文件        htmls = str(htmls, encoding='utf-8')# 获取的是自检码(bytes)  需要字符串 需要进行转化  str(自检码,转换类型)        return htmls#将字符串返回    #   定义一个方法分析文本(分析字符串)    def __analysis(self, htmls):        root_html = re.findall(Spider.root_pattern, htmls)# (类变量,分析的内容)        anchors = []# 定义一个anchors列表        for html in root_html:            name = re.findall(Spider.name_pattern,html)#正则表达式,取出所有的主播姓名            number = re.findall(Spider.number_pattern,html)#正则表达式,取出所有的主播人气            anchor = {'name':name,'number':number}# 定义一个字典,将主播名字和人气组合在一起            anchors.append(anchor)# (将定义的字典放到列表中)      给列表中添加一个元素——append        return anchors#将列表返还回去    # 数据精炼(去掉空格和换行符)    def __refine(self, anchors):        l = lambda anchor:{'name': anchor['name'][0].strip(),# 内置函数(strip)消除字符串中的空格和换行                           'number': anchor['number'][0]# 转换成字符串                           }        return map(l, anchors)# lambda表达式,处理的列表(map会根据提供的函数对指定序列做映射。)    # 为比较做准备的种子key  这里接受的anchor是字典(名字不可以进行比较,人气进行比较)    def __sort_seed(self, anchor):        r = re.findall('\d*',anchor['number'])# 正则表达式提取人气        number = float(r[0])# 提取出来后还是文本,将文本转换成数字(文本中有小数所以不能用int)        if '万'in anchor['number']:# 某些带有‘万’对这种情况进行处理            number *= 10000        return number    # 排序:(利用内置函数sorted(要排序的列表,key=一个函数(这里的作用是指导哪个字典进行大小比较)(具有可比较性sorted才能用))进行排序)    def __sort(self, anchors):        anchors = sorted(anchors, key=self.__sort_seed, reverse=True)# (操作对象,函数,reverse  True降序,False升序)        return anchors    def __show(self,anchors):#对字典的比较进行标序        for rank in range(0,len(anchors)):            print('rank ' + str(rank + 1) #输出‘rank’加上标序                  + ':' + anchors[rank]['name']#输出主播的姓名                  +'              '+anchors[rank]['number']#输出主播的人气                  )    def go(self, htmls):#定义一个入口方法(又是一个总控方法,将所有方法总控调用)        htmls = self.__fetch_content()# 提取内容(返回回来字符串)        anchors = self.__analysis(htmls)# 分析内容(得到列表)        anchors = list(self.__refine(anchors))# 精炼内容      返还过来的是map列表 将格式转换成列表        anchors = self.__sort(anchors)# 业务处理(人气排名比较)        self.__show(anchors)# 展示# 实例化Splider:splider = Spider()splider.go()

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与2

我也是看到这,那么视频中的代码为何可以运行

使用道具 举报

很明显呢好像,你最后一行直接spider.go()了,而 go 函数的定义里面有个htmls参数,你没有传,肯定有错误的

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!