scrapy初探(一)-斗鱼TV直播信息抓取
由于有相关需求,最近两天开始学了一下scrapy
这次我们就以爬取斗鱼直播间为例,我们准备爬取斗鱼所有的在线直播信息,
包括1.主播昵称 2.直播领域 3.所在页面数 4.直播观看人数 5.直播间url
开始准备爬取的页面如图
url为:https://www.douyu.com/directory/all
但实际经过查看发现翻页是由ajax响应的,实际的ajax页面为:
https://www.douyu.com/directory/all?page=1&isAjax=1
其中page即为页面数
我们所需要的信息也在页面中,所以直接爬取该页面即可,
先编辑items.py
class ProjectItem(scrapy.Item):
title=scrapy.Field()
user=scrapy.Field()
num=scrapy.Field()
area=scrapy.Field()
zhibojian=scrapy.Field()
index=scrapy.Field()
接着编写spider.py,其中思路比较简单,回调函数即为parse本身,由于网站当页面超过实际页面时,显示的是第一页信息,而且页面是动态的,所以我们对第一页的zhibojian信息保存,保存在box中,并对index>30时进行判断,一旦直播间信息出现在box中,说明为第一页了。
index=1
box=[] def handlenum(char):
if u'万' in char[0]:
char[0] = str(float(char[0].replace(u'万', '')) * 10000)
return char class newspider(scrapy.Spider):
name='ajax'
allowed_domains = ["www.douyu.com", 'douyucdn.cn']
start_urls = ["https://www.douyu.com/directory/all?page=1&isAjax=1"] def parse(self, response):
global index,box
selector=Selector(response)
for sel in selector.xpath('/html/body/li'):
item=ProjectItem()
item['title']=sel.xpath('a/@title').extract()
item['user']=sel.xpath('a/div/p/span[1]/text()').extract()
num=sel.xpath('a/div/p/span[2]/text()').extract()
item['num'] =handlenum(num)
item['area']=sel.xpath('a/div/div/span/text()').extract()
zhibojian=sel.xpath('a/@href').extract()
if index is 1:
box.append(zhibojian[0])
elif index>20:
if zhibojian[0] in box:
return
item['zhibojian']=zhibojian
item['index']=index
yield item
index+=1
nexturl='https://www.douyu.com/directory/all?page=%s&isAjax=1'%str(index)
yield scrapy.Request(nexturl,callback=self.parse)
最后设置setting.py,这里我们使用csv格式来保存
FEED_URI=u'file:///C:/Users/tLOMO/Desktop/one.csv'
FEED_FORMAT='CSV'
最后运行即可得到one.csv
进过统计,我程序跑的时候,所有观看直播的人数为18290373,这个数字可信度我也搞不清啊,简单看了一下,所有的直播中直播农药和LOL的是最多的
scrapy初探(一)-斗鱼TV直播信息抓取的更多相关文章
- [转载]Fiddler为所欲为第四篇 直播源抓取与接口分析 [四]
今天的教程,主要是教大家如何进行“封包逆向”,关键词跳转,接口分析.(怎么样,是不是感觉和OD很像~~~)今天的教程我们以[麻花影视]为例,当然,其他APP的逻辑也是一样,通用的哦~ 首先需要做好准备 ...
- 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23866427 今天又遇到一个网页数据抓取的任务,给大家分享下. 说道网页信息抓取 ...
- Ajax异步信息抓取方式
淘女郎模特信息抓取教程 源码地址: cnsimo/mmtao 网址:https://0x9.me/xrh6z 判断一个页面是不是Ajax加载的方法: 查看网页源代码,查找网页中加载的数据信息,如果 ...
- Atitit.web的自动化操作与信息抓取 attilax总结
Atitit.web的自动化操作与信息抓取 attilax总结 1. Web操作自动化工具,可以简单的划分为2大派系: 1.录制回放 2.手工编写0 U' z; D! s2 d/ Q! ^1 2. 常 ...
- 网页信息抓取 Jsoup的不足之处 httpunit
今天又遇到一个网页数据抓取的任务,给大家分享下. 说道网页信息抓取,相信Jsoup基本是首选的工具,完全的类JQuery操作,让人感觉很舒服.但是,今天我们就要说一说Jsoup的不足. 1.首先我们新 ...
- 网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)
转自原文 网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp) 最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决 ...
- 接口测试——fiddler对soapui请求返回信息抓取
原文:接口测试——fiddler对soapui请求返回信息抓取 背景:接口测试的时候,需要对接口的请求和返回信息进行查阅或者修改请求信息,可利用fiddler抓包工具对soapui的请求数据进行抓取或 ...
- Scrapy爬虫框架教程(四)-- 抓取AJAX异步加载网页
欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction ...
- Windows Phone & Windows App应用程序崩溃crash信息抓取方法
最近有用户反馈,应用有崩溃的情况,可是本地调试却无法重现问题,理所当然的,我想到了微软的开发者仪表盘,可以查看一段时间内的carsh记录,不过仪表盘生成carsh记录不是实时的,而且生成的报告查看非常 ...
随机推荐
- Java的集合框架(第一次小结)
知识点一.集合框架Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中二.集合框架的结构Collection:集合接口Map:键值对接口List:有序不唯一列表接口S ...
- StringUtils工具类常用方法汇总(截取、去除空白、包含、查询索引)
一.截取 StringUtils中常用的截取字符串的方法如下: substring(String str,int start) substring(String str,int start, in ...
- 学习类后回顾pickle及collections模块应用场景优化
1.首先创建一个类,并给出一个对象 class Dog(object): def __init__(self,name,kind,age): self.name=name self.kind=kind ...
- Ubuntu 16.04下vsftpd 安装配置实例
从https://www.linuxidc.com/Linux/2017-06/144807.htm转载 第一步:安装VSFTPD sudo apt-get install vsftpd 安装完成后启 ...
- container(容器),injection(注入)
1.container为什么会出现? 在书写程序的时候,我们常常需要对大量的对象引用进行管理.为了实现有效的归类管理,我们常常将同类的引用放置在同一数据容器中.由于数据容器中存放了我们随时可能需要使用 ...
- Docker安装准备
第一次写作下笔记: 以centos6.5安装yum优先级插件 yum install yum-priorities 1.epel简介: https://fedoraproject.org/wiki/E ...
- HAOI 2018 染色(容斥+NTT)
题意 https://loj.ac/problem/2527 思路 设 \(f(k)\) 为强制选择 \(k\) 个颜色出现 \(s\) 种,其余任取的方案数. 则有 \[ f(k)={m\choos ...
- vue+vux scrollTop无法实现定位到具体dom
先看一下最终的运行效果. 项目背景介绍:技术栈: vue+vux+nodejs需求:对汽车品牌列表可以按照字母进行索引定位 在开发中实现这种需求,心想还不是小菜一碟,作为一个饱经bug的程序员,别的我 ...
- windows同时安装了两种jdk
因为某种需要,同时安装jdk1.8 和jdk1.7 因为电脑曾经安装了jdk1.8,并且已经设置好环境变量.后来新添加的jdk1.7 出现问题: 先是安装的1.8,之后有安装了1.7,在环境变量中也配 ...
- Django2.1.5使用xadmin打造适合国人的后台管理系统
python做web开发的话,flask.django是比较火的框架了,django是一个比较大的框架,也是一个快速开发利器.但是,django自带的后台admin不太好看,也不太符合我们国人的习惯, ...