python爬虫一

爬取斗鱼直播(博主姓名和热度)

from urllib import request
import requests
from bs4 import BeautifulSoup
import re
class Spider():
    url='https://www.douyu.com/g_LOL'
    headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT'
                 ' 10.0; Win64; x64) AppleWebKi'
                 't/537.36 (KHTML, like Gecko) '
                 'Chrome/64.0.3282.140 Safari/537.3'
                 '6 Edge/18.17763'}
    root_pattern='<div class="DyListCover' \
                 '-info">[\s\S]*?</h2></div>'
    name_pattern='<use xlink:href="#icon-user_c95a' \
                 'cf8"></use></svg>(.*?)</h2></div>'
    number_pattern='<use xlink:href="#icon-hot_8a57f0b"></' \
                   'use></svg>(.*?)</span>'

    def __fetch_content(self):
        htmls=requests.get(Spider.url,headers=Spider.headers)
        htmls=htmls.text
        return htmls

    def _analysis(self,htmls):
        root_html=re.findall(Spider.root_pattern,htmls)

        anchors=[]
        for html in root_html:
            name=re.findall(Spider.name_pattern,html)
            number=re.findall(Spider.number_pattern,html)
            anchor={'name':name,'number':number}
            anchors.append(anchor)

        return anchors

    def __refine(self,anchors):
        l=lambda anchor:{'name':anchor['name'][0].strip(),
                         'number':anchor['number'][0]
                         }
        return map(l,anchors)

    def __sort(self,anchors):
         anchors=sorted(anchors,key=self.__sort_seed,reverse=True)
         return anchors

    def __sort_seed(self,anchor):
        r=re.findall('\d*',anchor['number'])
        number=float(r[0])
        if '万' in anchor['number']:
            number*=10000
        return number

    def __show(self,anchors):
        for rank in range(0,len(anchors)):
            print('rank '+str(rank+1)+' : '+
                  anchors[rank]['name']+'~~~~~~'
                  +anchors[rank]['number'])

    def go(self):
        htmls=self.__fetch_content()
        anchors=self._analysis(htmls)
        anchors=self.__refine(anchors)
        anchors=self.__sort(anchors)
        self.__show(anchors)

spider=Spider()
spider.go()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值