爬取斗鱼格斗区主播人气值

import urllib.request
import urllib.error
import threading
import time
import re
from urllib.request import urlopen
url='https://www.douyu.com/directory/game/FTG'
agent='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'
user_headers={'User-Agent':agent}
request=urllib.request.Request(url,headers=user_headers)
response=urllib.request.urlopen(request)
pagecode=response.read().decode('utf-8')
pattern=re.compile('<h3 class="ellipsis">\s+(.*?)\s+</h3>.*?<span class="dy-name ellipsis fl">(.*?)</span>.*?<span class="dy-num fr.*?>(.*?)</span>',re.S)
#配好了爬取房间题目,主播名,人气数值三项的正则表达式
items=re.findall(pattern,pagecode)
contents=[]
n=0
for item in items:
      contents.append(item)
      n+=1
print(n)
file = open("DY_FTG.txt","w+")#创建TXT文件
a=0
while a<n:
      floor=contents[a][0]+' '+contents[a][1]+' '+contents[a][2]+'\n'
      file.write(floor)#把爬取数据写入文件里
      a+=1
file.close()

可以成功爬取主播数据,并写入文件中。
Ps:斗鱼本来就是按照人气高低来给主播排序的,但是我还是想按照人气高低把主播重新排序,于是我加了一个起泡排序法,却发现顺序乱了。
主播人气第一页
主播人气第二页

经过观察发现,在万人气主播和千人气主播的比较出现错误,千人气和百人气主播的比较出现错误,类似如此。应该是人气数值保存成字符型了,应该是数值型才对。而且斗鱼万人气的表示方法是XX万,我的方法是把字符串第一位到倒数第二位转换成数值类型,再乘以10000。
然而这中间又涉及到元组类型是不能更改数据的,列表才可以。而我的元组是多维数组,更是要每一层都要列表化才行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值