用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('\n')[-1].strip(), "人气": float(num.text()[:-1]) if '万'in num.text() else float(num.text())/10000, } self.db['host'].insert(data)
运行后的结果:
几分钟爬到了8000条信息
代码短了很多,简洁了很多,还不用自己写进程池。下一步尝试进入主播房间获取贵族人数,礼物排行等更详细的信息。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 欧阳的2024年终总结,迷茫,重生与失业
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· .NET Core:架构、特性和优势详解