诶,本人一个大三真皮沙发男。最近迷上了斗鱼大司马,这个就很有意思,你知道吧。

就想写一个python爬虫来搞一波事情,觉得捞月狗这个平台还不错,就花了点时间写了一个用pyqt5做UI界面的爬虫。顿时就觉得爬虫高大上了不少,诶,你懂我意思的。原来写爬虫爬过淘宝网,赶集网,58同城,还在妹子图网站开过车,就很完美。开车的话就不能说的太多,很多人会晕车的,欸,你懂我意思的。

本次爬虫基于python3.6+Beautifulsoup+pyqt5。基本上python3的版本都可以直接复制使用的。废话扯得多了,直接就上干货了。

上图就是本次爬虫要爬取的页面了,我们要做的就是爬取每个矩形框里面的数据,包括标题(titles),在线人数(nums),主播(hosts),以及直播平台(tvs)。将这四个数据分别抓取下来放在python的数据结构词典(dict)里面。具体代码如下:

def get_one_page(url):wb_data = requests.get(url)wb_data.encoding = wb_data.apparent_encodingif wb_data.status_code == 200:return wb_data.textelse:return Nonedef parse_one_page(html):soup = BeautifulSoup(html, 'lxml')titles = soup.select('div.mode-box.classfiy-box div.video-pic-list ul li a div.txt h6')nums = soup.select('div.mode-box.classfiy-box div.video-pic-list ul li a div.video-set span.look-icon')hosts = soup.select('div.mode-box.classfiy-box div.video-pic-list ul li a div.video-set span.person-icon.subStrTitle')tvs = soup.select('div.mode-box.classfiy-box div.video-pic-list ul li a div.video-set span.tv')wb_data = []for title, num, host, tv in zip(titles, nums, hosts, tvs):data = {'标题': title.get_text(),'观看人数': num.get_text(),'主播': host.get_text(),'平台': tv.get_text()}wb_data.append(data)return wb_data

get_one_page()函数主要通过requests方法获得当前网页里面的数据,然后再在parse_one_page()函数里面对获得的网页数据进行抓取。笔者用的是beautifulsoup这个很成熟的第三方库,诶顺便说一下python这个东西第三方库太多了,拥抱开源太重要了,你懂我意思的!最后将获得的wb_data返回供其他程序调用。

然后这个时候就需要一个土白土白的界面了。说起界面qt在这个方面确实做得不错,无论在C++上还是python我都极其喜欢qt。

因为本次的重点不在UI上就意思意思的做了个土肥圆的界面,搞不了花里花哨的东西,就很费力气,你懂我意思的。

上图就是抓取之后的界面了,可以看到笔者相当的懒惰,这么丑的东西怎么好意思拿出手,可是笔者这不很累吗。诶,你懂我意思。

那上面的界面如何实现了,又如何和刚才的爬虫结合起来了,这里就不得不说qt的信号槽机制了,简直就是上个时代的创新,就很皮,你知道吧。至于如何写qt的界面那就不是笔者的任务了,讲道理,笔者也只是会点皮毛。具体的代码如下:

class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle('捞月狗爬虫')layout = QVBoxLayout()self.textArea = QTextEdit()button = QPushButton('开始')button.pressed.connect(self.get_text)widget = QWidget()widget.setLayout(layout)widget.setFixedWidth(800)widget.setFixedHeight(600)layout.addWidget(self.textArea)layout.addWidget(button)self.setCentralWidget(widget)def add_text(self, url):# url = 'http://www.laoyuegou.com/media_v2/live/index/page/1.html'html = get_one_page(url)wb_data = parse_one_page(html)for item in wb_data:self.textArea.append(str(item))def get_text(self):for i in range(1, 10):url = 'http://www.laoyuegou.com/media_v2/live/index/page/' + str(i) + '.html'# self.textArea.append(url)self.add_text(url)

说到这里,笔者已经累得不行了,诶,等会儿还有一晚上的实验课。如果想要入爬虫坑的童靴们,兄弟们,姐妹们,瓜皮们,请移步这里源代码。

python爬虫之爬取捞月狗直播信息相关推荐

  1. 《英雄联盟》爬取捞月狗数据——想要什么角色随你定

    Python爬取捞月狗数据 要抓取的数据如下图所示: 主要包括王者游戏ID,所在区服,胜点,胜场,负场,胜率,最近状态,擅长位置,本命英雄等.由于捞月狗的数据是每天更新的,所以不同时间爬取数据可能会有 ...

  2. 【Python爬虫】爬取微信公众号文章信息准备工作

    有一天发现我关注了好多微信公众号,那时就想有没有什么办法能够将微信公众号的文章弄下来,而且还想将一些文章的精彩评论一起搞下来.参考了一些文章,通过几天的研究基本上实现了自己的要求,现在记录一下自己的一 ...

  3. Python全栈开发-Python爬虫-05 爬取猫眼电影榜单信息

    爬取猫眼电影榜单信息(翻页) 一. 获取url及headers 首先进入猫眼电影首页: 猫眼电影 之后点击菜单栏的 榜单 并在下面选择 TOP100榜 接着右击检查并刷新界面,在Network中找到4 ...

  4. 【python爬虫】爬取淘宝网商品信息

    相信学了python爬虫,很多人都想爬取一些数据量比较大的网站,淘宝网就是一个很好的目标,其数据量大,而且种类繁多,而且难度不是很大,很适合初级学者进行爬取.下面是整个爬取过程: 第一步:构建访问的u ...

  5. Python爬虫实战 爬取同城艺龙酒店信息

    1.爬虫说明        同城艺龙的反爬做的是非常好的,本博主在与同城艺龙进行了一整天的殊死搏斗才将其完全的爬下来,本博主是以无锡为例,将无锡的所有酒店的相关信息都爬了下来,共3399条酒店数据,当 ...

  6. python爬虫:爬取动态网页并将信息存入MySQL数据库

    目标网站 http://www.neeq.com.cn/disclosure/supervise.html 爬取网页该部分内容 网页分析 查看网页源代码发现没有表格部分内容,对网页请求进行分析 F12 ...

  7. python爬虫: requests爬取flash播放页面的信息

    我们通过查看知道flash类型的网页采取文件格式是amf类型的 AMF(Action Message Format) 是Flash与服务端通信的一种常见的二进制编码模式,其传输效率高,可以在HTTP层 ...

  8. python爬虫——requests爬取高德地图全国天气信息

    一.分析 在浏览器中搜索高德地图,按F12,点击搜索 可以查看到西安市对应的citycode是610100 cityList表示出城市信息,有可能有城市的编号,我们复制他的url查看 在json在线解 ...

  9. Python爬虫之爬取车票信息

    Python爬虫之爬取所有火车站的站台信息 前面我写过一篇关于火车站站台的查询,这篇基于站台的查询写火车车票余额信息查询-- 一.信息获取: 获取请求地址: 在浏览器菜单中找到Web开发者模式,打开网 ...

最新文章

  1. 为什么回归测试在增量开发中特别重要?
  2. spring mvc 自动生成代码
  3. 019_with语句
  4. Shell脚本大量示例
  5. PHP Mysql-创建数据表
  6. Angular 应用的Support package
  7. [vue] 说说你对vue的mixin的理解,有什么应用场景?
  8. Tensorflow--代码1
  9. vuejs对象更新渲染_vue 数组和对象渲染问题
  10. 在linux用ueditor遇到的问题
  11. maven项目jdk版本配置及常见错误Error:java: 无效的目标发行版: 8解决
  12. 刘奇:当今一切都要更实时、更弹性、更简单,TiDB 就是这样的基础设施 | TiDB DevCon 2020
  13. 使用csc命令手动编译cs文件
  14. 小爱同学控制ESP8266点灯
  15. html如何设置整体字体颜色,html字体颜色 html如何设置字体颜色
  16. CCNet_Criss-Cross Attention for Semantic Segmentation
  17. 硬盘安装win10,笔者教你如何一步步从硬盘安装win10系统
  18. 【Python】通过 Python 设置电脑代理端口
  19. 银行账户模拟java_使用Java模拟银行账户存、取款、转账功能
  20. 3D远方动态白云页面源码

热门文章

  1. python填写问卷星_Python填写问卷星
  2. _DataStructure_C_Impl:求图G中从顶点u到顶点v的一条简单路径
  3. 【庖丁解牛】成功解决nginx报错:bind() to 0.0.0.0:8090 failed (13: Permission denied)
  4. 一文详解ARP报文格式及工作原理
  5. youtube 字幕视频搬运
  6. 搭建可以通过外网访问本地服务器CentOS7,这一篇就够了
  7. 飞利浦净化器还能走多远
  8. 华为任正非:​不为假动作付酬
  9. 平板触控笔要原装的吗?时下最火的平替苹果笔测评
  10. NodeJs C++ addon(插件nan方式)