1.明确爬虫目的

爬虫目的需要我们明确的,没有目的的爬虫都是耍流氓!像我这次爬虫目的能不能从网页上爬下来。

2.怎么来爬?

a. 先要找到具有唯一性的标签

<li class="game-live-item" gid="1"><a href="http://www.huya.com/baozha" class="video-info new-clickstat " target="_blank" report="{&quot;eid&quot;:&quot;click/position&quot;,&quot;position&quot;:&quot;lol/0/1/1&quot;,&quot;game_id&quot;:&quot;1&quot;,&quot;ayyuid&quot;:&quot;17363578&quot;}"><img class="pic" data-original="//screenshot.msstatic.com/yysnapshot/1801cfa4fc99aabc841eb9e25fa43f15a608b02d1055?imageview/4/0/w/338/h/190/blur/1" src="//screenshot.msstatic.com/yysnapshot/1801cfa4fc99aabc841eb9e25fa43f15a608b02d1055?imageview/4/0/w/338/h/190/blur/1/format/webp" onerror="this.οnerrοr=null; this.src='//a.msstatic.com/huya/main/assets/img/default/338x190.jpg';" alt="炸姐ADC的直播" title="炸姐ADC的直播"><em class="tag tag-recommend">大神推荐</em>        <div class="item-mask"></div><i class="btn-link__hover_i"></i><p class="tag-right"><!-- 蓝光 --><!-- 热舞 --><!-- 存活人数 --></p></a><a href="http://www.huya.com/baozha" class="title new-clickstat" report="{&quot;eid&quot;:&quot;click/position&quot;,&quot;position&quot;:&quot;lol/0/1/1&quot;,&quot;game_id&quot;:&quot;1&quot;,&quot;ayyuid&quot;:&quot;17363578&quot;}" title="S8定位赛开始了11-0  裁决已解决" target="_blank">S8定位赛开始了11-0  裁决已解决</a><span class="txt"><span class="avatar fl"><img data-original="//huyaimg.msstatic.com/avatar/1095/83/2aa2f6905fe4382221d08b66d7cdcb_180_135.jpg" src="//huyaimg.msstatic.com/avatar/1095/83/2aa2f6905fe4382221d08b66d7cdcb_180_135.jpg" onerror="this.οnerrοr=null; this.src='//a.msstatic.com/huya/main/assets/img/default/84x84.jpg';" alt="炸姐ADC" title="炸姐ADC"><i class="nick" title="炸姐ADC">炸姐ADC</i></span><span class="num"><i class="num-icon"></i><i class="js-num">67.0万</i></span></span>
</li>

开始的时候我选取的是<span class="txt"></span>,虽然这个标签中涵盖了我们需要的主播名字和主播的粉丝量,但是,如果我们用正则表达式提取的时候,如果使用贪婪模式的时候,提取的信息就比上面多太多了,如果用非贪婪模式的时候,提取的内容也就只有下面这些:
<span class="txt"><span class="avatar fl"><img data-original="//huyaimg.msstatic.com/avatar/1095/83/2aa2f6905fe4382221d08b66d7cdcb_180_135.jpg" src="//huyaimg.msstatic.com/avatar/1095/83/2aa2f6905fe4382221d08b66d7cdcb_180_135.jpg" onerror="this.οnerrοr=null; this.src='//a.msstatic.com/huya/main/assets/img/default/84x84.jpg';" alt="炸姐ADC" title="炸姐ADC"><i class="nick" title="炸姐ADC">炸姐ADC</i></span>

缺失了主播的粉丝数,那么选取的标签就是不合理的。如果我们选择<li class="game-live-item" gid="1"></li>这个标签的时候就不会出现问题的。

b. 尽量选取匹配的信息

假想一下,如果我们只是获得主播名字,然后再获取主播粉丝,那么信息就对不上了,所以我们要选取匹配的信息。选取下面的就很合理。
<li class="game-live-item" gid="1"><a href="http://www.huya.com/baozha" class="video-info new-clickstat " target="_blank" report="{&quot;eid&quot;:&quot;click/position&quot;,&quot;position&quot;:&quot;lol/0/1/1&quot;,&quot;game_id&quot;:&quot;1&quot;,&quot;ayyuid&quot;:&quot;17363578&quot;}"><img class="pic" data-original="//screenshot.msstatic.com/yysnapshot/1801cfa4fc99aabc841eb9e25fa43f15a608b02d1055?imageview/4/0/w/338/h/190/blur/1" src="//screenshot.msstatic.com/yysnapshot/1801cfa4fc99aabc841eb9e25fa43f15a608b02d1055?imageview/4/0/w/338/h/190/blur/1/format/webp" onerror="this.οnerrοr=null; this.src='//a.msstatic.com/huya/main/assets/img/default/338x190.jpg';" alt="炸姐ADC的直播" title="炸姐ADC的直播"><em class="tag tag-recommend">大神推荐</em>        <div class="item-mask"></div><i class="btn-link__hover_i"></i><p class="tag-right"><!-- 蓝光 --><!-- 热舞 --><!-- 存活人数 --></p></a><a href="http://www.huya.com/baozha" class="title new-clickstat" report="{&quot;eid&quot;:&quot;click/position&quot;,&quot;position&quot;:&quot;lol/0/1/1&quot;,&quot;game_id&quot;:&quot;1&quot;,&quot;ayyuid&quot;:&quot;17363578&quot;}" title="S8定位赛开始了11-0  裁决已解决" target="_blank">S8定位赛开始了11-0  裁决已解决</a><span class="txt"><span class="avatar fl"><img data-original="//huyaimg.msstatic.com/avatar/1095/83/2aa2f6905fe4382221d08b66d7cdcb_180_135.jpg" src="//huyaimg.msstatic.com/avatar/1095/83/2aa2f6905fe4382221d08b66d7cdcb_180_135.jpg" onerror="this.οnerrοr=null; this.src='//a.msstatic.com/huya/main/assets/img/default/84x84.jpg';" alt="炸姐ADC" title="炸姐ADC"><i class="nick" title="炸姐ADC">炸姐ADC</i></span><span class="num"><i class="num-icon"></i><i class="js-num">67.0万</i></span></span>
</li>

c. 尽量选取他们的父级标签

3. 简单点的爬虫思路

a. 模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML

b.用正则表达式获取我们想要的数据

4.开始爬

附上源码(每个函数都解释的很清楚):

from urllib import request
import reclass Spider():url = 'http://www.huya.com/g/lol'root_pattern = '<li class="game-live-item" gid="1">([\w\W]*?)</li>'one_pattern = '<i class="nick" title="[\s\S]*?</i>'two_pattern = '<i class="js-num">([\s\S]*?)</i>'one_pattern_name = '>([\s\S]*?)</i>'#模拟HTTP请求(私有方法)def __fetch_content(self):r = request.urlopen(Spider.url)htmls=r.read()#如果不转成str的格式的话,就会造成机器卡顿htmls= str(htmls,encoding='utf-8')return htmls#数据分析def __analynize(self,htmls):rs = re.findall(Spider.root_pattern,htmls)star_lists = []for r in rs:rz = re.findall(Spider.one_pattern,r)#粉丝数follwers = re.findall(Spider.two_pattern,r)#主播名字name = re.findall(Spider.one_pattern_name,str(rz))#Spider.result[str(rzz[0])]=str(rx[0])star_list = {'name':name,'follwers':follwers}star_lists.append(star_list)return star_lists#数据精炼(提高数据的可靠性)def __refine(self,star_lists):func = lambda star_list:{'name':star_list['name'][0],'follwers':star_list['follwers'][0]}return map(func,star_lists)#业务处理(这里以排序代替)def __sort(self,star_end_lists):star_end_lists = sorted(star_end_lists,key=self.__key_access,reverse=True)return star_end_lists#key的排序规则def __key_access(self,star_end_list):num = re.findall('\d*',star_end_list['follwers'])num = float(num[0])if '万' in star_end_list['follwers']:num=num*10000return num#数据的后续处理(可以存入数据库)def __show(self,star_end_lists_sorted):print('------虎牙LOL主播粉丝的排行榜------')for i in range(1,len(star_end_lists_sorted)):print('排名:'+str(i)+'   '+star_end_lists_sorted[i-1]['name']+'   '+star_end_lists_sorted[i-1]['follwers'])#爬虫入口    def go(self):r1 = self.__fetch_content()star_lists = self.__analynize(r1)star_end_lists = self.__refine(star_lists)star_end_lists_sorted = self.__sort(list(star_end_lists))self.__show(star_end_lists_sorted)spider = Spider()
spider.go()

运行结果:

------虎牙LOL主播粉丝的排行榜------
排名:1   卡尔   71.9万
排名:2   毒纪   36.1万
排名:3   LCK冠军联赛   17.7万
排名:4   LPL职业联赛   16.0万
排名:5   MH、金灿毅ChanE   12.6万
排名:6   聆听-旋律   9.5万
排名:7   董月月   8.2万
排名:8   完美OB   7.9万
排名:9   芜湖神   6.3万
排名:10   叶子yasuo   5.2万
排名:11   第一吸血鬼屿水   3.5万
排名:12   灭世冷漠   3.3万
排名:13   最快锐雯风神   3.4万
排名:14   娇宝的老公李青强   2.2万
排名:15   纪小鹿   2.1万
排名:16   菜鸡文   1.9万
排名:17   八神   1.4万
排名:18   幼灵梦   1.5万
排名:19   虎牙丶柯南   1.0万
排名:20   小僧空空   9972
排名:21   潘神丶   9392
排名:22   开森的小唯美   8888
排名:23   阿俊z   8712
排名:24   90818丶追梦   8678
排名:25   铸哥   8010
排名:26   二A   7915
排名:27   烟雨丶青蛙瑞兹   7824
排名:28   吐司   6774
排名:29   正恒丶小白   6635
排名:30   844-暮笙小爷   5972
排名:31   国服第一赵信小雨   5655
排名:32   雨雾-小杰人马   5564
排名:33   正恒丶兔子   5479
排名:34   先锋丶婉清   5417
排名:35   可乐剑姬   5379
排名:36   节奏   4985
排名:37   腾嘉-熊大   4959
排名:38   正恒丶小鱼   4923
排名:39   844-雯雯   4779
排名:40   雨雾-阿龙赵信   4416
排名:41   娱加-萌小希   4373
排名:42   虎丶牙莎莉   4020
排名:43   十年锐雯   4013
排名:44   正恒丶伊芙神   3999
排名:45   亚古兽   3972
排名:46   虎牙东方梦魇   3888
排名:47   猴王一心   3806
排名:48   谁明浪子心   3694
排名:49   浩东德莱文   3539
排名:50   正恒丶芒果   3350
排名:51   兆辉-风度人影剑度天   3347
排名:52   耀弟-最强武器   3120
排名:53   觅寻哟   3049
排名:54   天亿-Aarou   2916
排名:55   先锋GJ丶空城男刀   2812
排名:56   爱拍-阿浩   2682
排名:57   Autism   2672
排名:58   叶包包丶   2571
排名:59   固执   2529
排名:60   Huya丶薄荷   2505
排名:61   阿明   2490
排名:62   兆辉-瑶神皎月   2475
排名:63   何遇是个帅卡特i   2472
排名:64   悦儿   2416
排名:65   5斧德莱文丶秒杀   2211
排名:66   正恒丶小雪   2197
排名:67   会好的   2151
排名:68   飘逸   2147
排名:69   娱加-U妮   2144
排名:70   铭人丶千姿   2038
排名:71   虎牙直播-蔸   1992
排名:72   无心瑞兹   1979
排名:73   逍遥   1954
排名:74   悟道沙皇   1934
排名:75   光锡兰博   1918
排名:76   开开皇子   1874
排名:77   正恒丶小贼   1782
排名:78   泽佳琴女   1713
排名:79   娱加-杨思涵   1712
排名:80   武神诺手丶强者灌篮   1654
排名:81   烟雨丶陈年剑圣   1646
排名:82   娱加-辣么萌   1642
排名:83   LCK备用1   1595
排名:84   聆听-鑫哥卡萨丁   1582
排名:85   雨雾-火鸡兰博   1571
排名:86   老唐家糯米饭   1570
排名:87   正恒丶逗比空   1552
排名:88   拔哥丶卡特   1540
排名:89   菲菲   1532
排名:90   辗转辗转辗转   1517
排名:91   虎牙鱼王-洛水尘   1505
排名:92   国服第一卡特   1495
排名:93   极限哥   1477
排名:94   Huya丶风男   1431
排名:95   王吉吉先生   1424
排名:96   小风手速亚索   1402
排名:97   魔魅大少   1401
排名:98   LCK备用2   1396
排名:99   虎牙嗨少   1371
排名:100   北北   1365
排名:101   坑货的提莫   1346
排名:102   正恒丶烧肉粽   1320
排名:103   甲第-乔仪   1298
排名:104   提百万   1297
排名:105   十四剑姬   1277
排名:106   正恒丶啤梨   1241
排名:107   我是钟钟   1166
排名:108   天天天   1121
排名:109   RiotGame1   1109
排名:110   兆辉-章鱼哥   1090
排名:111   河蟹i   1090
排名:112   京酱Rose   1063
排名:113   零一c   1063
排名:114   冷三指   1059
排名:115   喵喵   1058
排名:116   腾嘉-陈小艾   1026
排名:117   虎牙野区剑圣皓児   1006
排名:118   小姚姚   1001
排名:119   虎牙丶Hope   991

声明:以上数据是时间在2018.1.18.13:53统计的

5.爬虫有什么用

存到数据库中,就可以自己做小程序,或者其他的了。

转载请注明出处,谢谢!

转载于:https://www.cnblogs.com/huhu1203/p/8309826.html

记录一下自己爬虎牙LOL主播的爬虫思路相关推荐

  1. 爬虫技术python爬到女性语音_python爬虫看看虎牙女主播中谁最“顶”步骤详解

    网页链接:https://www.huya.com/g/4079 这里的主要步骤其实还是和我们之前分析的一样,如下图所示: 这里再简单带大家看一下就行,重点是我们的第二部分. 既然网页结构我们已经分析 ...

  2. 爬取虎牙游戏主播人气分析实战

    爬取虎牙游戏主播人气分析实战: 在写的时候遇得了几个坑,然后又填上了: 第一个是: 开头我想爬取主播人气:但是找不到 div 只找到 span 遇到下一个</span>就结束了 无奈只能找 ...

  3. Python爬取美女主播图片适合初学者

    Python爬取虎牙女主播图片,非常适合初学者,代码少,思路清晰 开发环境Pycharm import time import requests from lxml import etree from ...

  4. 使用selenium,xpath,线程池爬取斗鱼主播信息

    使用xpath,线程池爬取斗鱼主播信息: 主要爬取主播昵称,直播内容分类,房间名称,房间号以及人气,共爬取了大概110多页数据,大概15000条,保存在txt文本中, import timefrom ...

  5. python怎么爬虎牙_Python爬虫爬取虎牙数据!谁才是虎牙第一主播!

    首先打开我们所需要爬取的网站,这里我们挑选的是虎牙直播. 我们今天所爬取的数据就是直播名,直播地址,直播的人,观看数以及直播的类别,如下图所示 第一步关于直播的类别,从第一张图片我们可以看到在右边有直 ...

  6. Python爬虫爬取虎牙数据!谁才是虎牙第一主播!

    首先打开我们所需要爬取的网站,这里我们挑选的是虎牙直播. 我们今天所爬取的数据就是直播名,直播地址,直播的人,观看数以及直播的类别,如下图所示 第一步关于直播的类别,从第一张图片我们可以看到在右边有直 ...

  7. python爬取斗鱼主播图片

    今天闲来无事,爬取一下斗鱼女主播的图片,之前学习scrapy的时候写过一个找不到了,今天使用requests和bs4重新写了一份,闲话不多说,直奔主题. 首先用Chrome浏览器访问斗鱼官网: 当然是 ...

  8. python爬取斗鱼主播图片_F_hawk189_新浪博客

    今天闲来无事,爬取一下斗鱼女主播的图片,之前学习scrapy的时候写过一个找不到了,今天使用requests和bs4重新写了一份,闲话不多说,直奔主题. 首先用Chrome浏览器访问斗鱼官网: 当然是 ...

  9. 利用xpath爬取斗鱼主播热度和房间标题

    import requests import pandas as pd from bs4 import BeautifulSoup import os import time import rando ...

最新文章

  1. 94页论文综述卷积神经网络:从基础技术到研究前景
  2. inspinia前端模板怎样编写消息提示框点击确定后的回调方法
  3. 计算机图形学在数学中的应用,计算机图形学的数学工具与C#实现:数学C
  4. c语言中判断输入是否为数字_C 判断
  5. Maven项目中使用JUnit进行单元测试
  6. 两天,我把分布式事务搞完了
  7. Web程序员如何入门以太坊开发
  8. iphone11返回上一级手势怎么设置_华为手机的这五种导航方式,你更习惯哪一种?怎么切换?...
  9. 『ORACLE』SPM(下)-baseline实验(11g)
  10. 计算机音乐谱魔法城堡,《魔法城堡》简谱 TFBOYS 乐谱 - 新芭网
  11. 根据代表性序列预测OTU/ASV生活史策略——寡营养型or富营养型
  12. UCB——上界置信算法
  13. Android RSA加密解密
  14. Java中哈希值是怎么算的
  15. 重装系统后电脑耳机插前面没有声音输出怎么办?
  16. linux boot引导修复工具,修复linux的grub2引导(单独/boot,lvm-root)
  17. NFA到DFA的转化
  18. reference_line_provider
  19. 【Python】glob.glob()函数解释
  20. 如何通过上传文件控制服务器,怎么给远程服务器上传文件

热门文章

  1. 修改Element-ui表格样式
  2. spark使用之ALS版本对比
  3. 如何将谷歌浏览器的插件下载到本地?
  4. ue4白天夜晚切换_白天/夜晚编码的美好时光...多年来最佳
  5. 记录个tomcat启动报错问题,Unable to process Jar entry
  6. android activity_main.xml,Android Studio 打开activity_main.xml不能正常显示
  7. 关于GIS的一些感悟·思考
  8. 基于python的植物大战僵尸游戏开发
  9. 代码块:在Java中,使用{}括起来的代码被称为代码块。
  10. zz 图像数据投影投影数据重建图像 radon