python 爬取斗鱼 Ajax动态加载js分页 使用phontomjs无界面浏览器
2017-12-08 13:56
513 查看
python2.7版本
运行完结果:
#coding:utf8 import unittest from selenium import webdriver from bs4 import BeautifulSoup as bs class douyu(unittest.TestCase): # 初始化方法,必须是setUp() def setUp(self): self.driver = webdriver.PhantomJS() self.num = 0 self.count = 0 # 测试方法必须有test字样开头 def testDouyu(self): self.driver.get("https://www.douyu.com/directory/all") while True: soup = bs(self.driver.page_source, "lxml") # 房间名, 返回列表 names = soup.find_all("h3", {"class" : "ellipsis"}) # 观众人数, 返回列表 numbers = soup.find_all("span", {"class" :"dy-num fr"}) #主播id peoples = soup.find_all("span", {"class": "dy-name ellipsis fl"}) # zip(names, numbers) 将name和number这两个列表合并为一个元组 : [(1, 2), (3, 4)...] for name, number,people in zip(names, numbers,peoples): print u"观众人数: -" + number.get_text().strip() + u"-\t房间名: " + name.get_text().strip() + u"-\t主播名: " + people.get_text().strip() self.num += 1 #self.count += int(number.get_text().strip()) # 如果在页面源码里找到"下一页"为隐藏的标签,就退出循环 if self.driver.page_source.find("shark-pager-disable-next") != -1: break # 一直点击下一页 self.driver.find_element_by_class_name("shark-pager-next").click() # 测试结束执行的方法 def tearDown(self): # 退出PhantomJS()浏览器 print "当前网站直播人数" + str(self.num) print "当前网站观众人数" + str(self.count) self.driver.quit() if __name__ == "__main__": # 启动测试模块 unittest.main()
运行完结果:
相关文章推荐
- 使用python+selenium制作浏览器爬虫,彻底解决ajax异步加载问题(待更新)
- 使用python抓取js动态加载的网页
- Python爬虫学习——使用selenium和phantomjs爬取js动态加载的网页
- 使用python抓取js动态加载的网页
- 怎样使AJAX有利于SEO:为使用JS和AJAX动态加载的内容制定href
- DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
- asp.net在使用母版页的内容页面中动态加载css和js文件的方法
- 使用ajax动态加载select下拉框
- Ext界面做图片动态加载的图片放大镜效果并解决JS内存泄漏问题
- 使用ExtJs开发MIS系统(2):Js的动态加载
- 使用Ajax动态加载数据
- 使用jquery动态加载js,css文件
- 使用jQuery,AJAX和ASP.NET动态加载数据页上的滚动
- jsp/servlet使用ajax动态加载dtree, dtree样式/图片修改 (java 生成dtree servlet json)
- ASP.NET使用后台动态加载js和css文件
- 动态引入的外部 JS 文件在各浏览器中的加载顺序不一致问题解决
- 使用JS动态在页面加载CSS文件
- ajax动态加载js
- jsp/servlet使用ajax动态加载dtree, dtree样式/图片修改 (java 生成dtree servlet json)
- 使用AJAX动态加栽JS脚本和CSS样式