zoukankan      html  css  js  c++  java
  • 用pyspider爬斗鱼主播信息

    之前用request+bs4+Mongodb爬斗鱼主播信息,需要自己写很长一大段, 现在用pyspider试试。开始安装pyspider。

    python3.7还不支持,3.6版本直接pip install pyspider就好了。

    浏览器输入http://localhost:5000

    Creaet按钮创建新项目,并输入起始网址,这里选择斗鱼分类网址,在这里爬出所有类目。

    三个步骤:

    1.起始页(获取下个操作步骤的url)

    2.得到的url下(爬取信息)

    3.save_to_mongo(存入数据库)

    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
    # Created on 2018-10-23 21:01:23
    # Project: douyu
    
    from pyspider.libs.base_handler import *
    import pymongo
    
    class Handler(BaseHandler):
        crawl_config = {
        }
        client = pymongo.MongoClient('localhost')
        db = client['spider_douyu']
    
        @every(minutes=24 * 60)
        def on_start(self):
            self.crawl('https://www.douyu.com/directory', callback=self.index_page, validate_cert=False)
    
        @config(age=10 * 24 * 60 * 60)
        def index_page(self, response):
            # 在浏览器里面获取的选择器
            for each in response.doc('#live-list-contentbox a[href^="http"]').items():
                self.crawl(each.attr.href, callback=self.detail_page, validate_cert=False)
          
                
        @config(priority=2)
        def detail_page(self, response):
            host_names = response.doc('.ellipsis.fl').items()
            nums = response.doc('.dy-num.fr').items()
            titles = response.doc('.mes h3').items()
            urls = response.doc('#live-list-contentbox  li  a').items()
            
            for host_name, num, title, url in zip(host_names,nums,titles,urls):
                data = {
                    "网址": 'https://www.douyu.com/' + url.attr.href,
                    "主播": host_name.text(),
                    "标题": title.text().split('
    ')[-1].strip(),
                    "人气": float(num.text()[:-1]) if ''in num.text() else float(num.text())/10000,
                }
                self.db['host'].insert(data)

    运行后的结果:

    几分钟爬到了8000条信息

    代码短了很多,简洁了很多,还不用自己写进程池。下一步尝试进入主播房间获取贵族人数,礼物排行等更详细的信息。

  • 相关阅读:
    物料清单概述
    java开发webservice的1种方式
    java web service简单示例
    IOS证书过期
    Windows 2012 R2 安装net4.6.1
    sqlserver 性能调优脚本
    solidty--owner.sol
    ERC20-USDT
    EOS 公开节点及自有节点部署
    微信第三方平台授权流程
  • 原文地址:https://www.cnblogs.com/lkd8477604/p/9840448.html
Copyright © 2011-2022 走看看