请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

爬虫

老师,我爬的就是虎牙,而且跟着你的步骤做的,和你的代码一模一样。在fetch_content 函数里html变量有那些标签,但是
root_html = re.findall(Spider.root_pattern,htmls) 这个root_html显示[],只显示了__len__:0. 请问是哪里不对?下面这个是我的源代码,请老师帮我看一下.多谢老师.

import re
from urllib import request

class Spider(): #面向对象构造爬虫
url = 'https://www.huya.com/g/lol
root_pattern = ‘([\s\S]*?)

def __fetch_content(self):   #获取网页内容,是一个私有方法
    r = request.urlopen(Spider.url)  #此方法接收网页地址url.
    htmls = r.read()
    htmls = str(htmls, encoding = 'utf-8')
    return htmls

def __analysis(self,htmls):
    root_html = re.findall(Spider.root_pattern,htmls)   
    # print(root_html[0])
    a = 1

def pub(self):               #定义一个入口方法
    htmls = self.__fetch_content()
    self.__analysis(htmls)

spider = Spider()
spider.pub()

正在回答 回答被采纳积分+3

1回答

7七月 2019-06-02 09:44:43

正则呢?和斗鱼的区别就只在正则表达式,斗鱼和虎牙的不太一样。你需要根据虎牙的html 修改下适配虎牙的正则。不知道你修改了吗?课程里也将了 如何根据html写正则的思路。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕用5005156 #1
    root_pattern = '<div class = "info clearfix">([\s\S]*?)</div>'
    回复 有任何疑惑可以回复我~ 2019-06-02 10:37:34
  • 提问者 慕用5005156 #2
    正则表达式就是上面这个。不知道为什么没有发出来..
    回复 有任何疑惑可以回复我~ 2019-06-02 10:37:56
  • 提问者 慕用5005156 #3
    老师你把我的代码运行一下,吧正则表达式粘贴上去就行了
    回复 有任何疑惑可以回复我~ 2019-06-02 10:40:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信