案例二:动态页面模拟点击

爬取斗鱼直播平台的所有房间信息:

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # python的测试模块
  4. import unittest
  5. from selenium import webdriver
  6. from bs4 import BeautifulSoup
  7. class douyuSelenium(unittest.TestCase):
  8. # 初始化方法
  9. def setUp(self):
  10. self.driver = webdriver.PhantomJS()
  11. #具体的测试用例方法,一定要以test开头
  12. def testDouyu(self):
  13. self.driver.get('http://www.douyu.com/directory/all')
  14. while True:
  15. # 指定xml解析
  16. soup = BeautifulSoup(driver.page_source, 'xml')
  17. # 返回当前页面所有房间标题列表 和 观众人数列表
  18. titles = soup.find_all('h3', {'class': 'ellipsis'})
  19. nums = soup.find_all('span', {'class': 'dy-num fr'})
  20. # 使用zip()函数来可以把列表合并,并创建一个元组对的列表[(1,2), (3,4)]
  21. for title, num in zip(nums, titles):
  22. print u"观众人数:" + num.get_text().strip(), u"\t房间标题: " + title.get_text().strip()
  23. # 指定元素找到则返回 非-1,表示到达最后一页,退出循环
  24. if driver.page_source.find('shark-pager-disable-next') != -1:
  25. break
  26. # 模拟下一页点击
  27. self.driver.find_element_by_class_name('shark-pager-next').click()
  28. # 退出时的清理方法
  29. def tearDown(self):
  30. print '加载完成...'
  31. self.driver.quit()
  32. if __name__ == "__main__":
  33. unittest.main()

Copyright © 黑五电商学院 amzfriday.com all right reserved