码迷,mamicode.com
首页 > Web开发 > 详细

Selenium处理动态HTML

时间:2018-03-10 14:05:26      阅读:425      评论:0      收藏:0      [点我收藏+]

标签:tor   完成   def   判断   pager   一个   十分   .com   next   

    当一些网站使用了动态加载我们该如何搞定呢?

    有两种方法:其一,直接在JavaScript里面采集内容,但是操作起来十分麻烦;其二,使用python的第三方库来运行JavaScript,直接采集你在浏览器里面看到的内容。

 

    这时候就用到了python的一个自动化测试工具Selenium,它可以根据我们的指令,让浏览器自动加载页面,获取所需要的数据。我们直接用命令行就可以安装selenium了:pip install selenium 。但是有一个问题,selenium自己本身是不具备浏览器功能的,需要配合第三方浏览器使用,如PhantomJS。但是,selenium开始渐渐不支持这个内置的无界面浏览器了,我们可以使用chrome来替代,但是需要安装Chromedriver,并添加环境变量。

    技术分享图片

 

 

    因为我安装的Chromedriver版本太低,所以会出现报错。但是可以看到,成功的打开了谷歌浏览器,并且显示Chrome正在受到自动测试软件的控制。

 

   技术分享图片

 

    模拟一个动态网页的加载。

 

 1 #这里是导入python的测试模块
 2 import unittest
 3 from selenium import webdriver
 4 from bs4 import BeautifulSoup
 5 
 6 
 7 #定义一个类,并且继承测试模块
 8 class douyuSelenium(unittest.TestCase):
 9     def setUp(self):
10         self.driver=webdriver.PhantomJS()
11 
12         #self.driver=webdriver.Chrome()
13     #具体的测试方法,要以test开头
14     def testDouyu(self):
15         self.driver.get("https://www.douyu.com/directory/all")
16         while True:
17             soup=BeautifulSoup(self.driver.page_source,"lxml")
18             titles=soup.find_all(h3,{class:ellipsis})
19             nums=soup.find_all(span,{class:dy-num fr})
20 
21             for title,num in zip(titles,nums):
22                 print(u观众人数 + num.get_text().strip(),u\t房间标题: + title.get_text().strip())
23             #判断是否到了最后一页
24             if self.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 tearTest(self):
30         print(u加载完成。。。)
31         self.driver.quit()
32 
33 
34 if __name__=="__main__":
35     unittest.main()

    

    技术分享图片

 

    可以看到爬取了房间人数以及标题。

Selenium处理动态HTML

标签:tor   完成   def   判断   pager   一个   十分   .com   next   

原文地址:https://www.cnblogs.com/CCColby/p/8535252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!