Python selenium介绍

王 茂南 2018年4月25日13:25:05
评论
1 2060字阅读6分52秒
摘要这一篇文章介绍一下selenium的使用,并给出一个例子,使用selenium来爬取北邮人论坛的十大。主要还是熟悉一下selenium的使用。

简介

这里讲一下python库selenium的简单介绍。这是一个浏览器自动化测试框架,可以模拟出用户操作。所以我们可以通过selenium来做一些爬虫。

Python selenium介绍

我会在下面示例代码部分放一下使用selenium来爬取北邮人论坛十大的内容。

参考资料

selenium简单实验

selenium快速使用

首先看一下selenium的快速使用, 我们可以通过下面的方式来查看我们是否获得了我们需要的页面信息 (打印出网页源代码).

  1. from selenium import webdriver
  2. import time
  3. driver = webdriver.Chrome()
  4. driver.set_page_load_timeout(30)
  5. driver.get('https://www.seebug.org/vuldb/ssvid-61248')
  6. print('等待页面加载')
  7. time.sleep(30)
  8. print('等待完成')
  9. print(driver.page_source)
  10. # 关闭浏览器
  11. driver.quit()

 

使用selenium爬取北邮人论坛

  1. from selenium import webdriver
  2. from lxml import etree
  3. import time
  4. class byr_crawle(object):
  5.     def __init__(self):
  6.         self.username = 'Username'
  7.         self.password = 'Password'
  8.     def run(self):
  9.         driver = webdriver.Firefox()
  10.         driver.set_page_load_timeout(60)
  11.         driver.get('https://bbs.byr.cn/index')
  12.         textElement = driver.find_element_by_id('id')#输入账号
  13.         textElement.clear()
  14.         textElement.send_keys(self.username)
  15.         passWordElement = driver.find_element_by_id('pwd')#输入密码
  16.         passWordElement.clear()
  17.         passWordElement.send_keys(self.password)
  18.         #找到登录按钮,进行登录
  19.         submitElement = driver.find_element_by_id('b_login')
  20.         submitElement.click()
  21.         #等待页面加载完毕
  22.         time.sleep(3)
  23.         html = driver.page_source
  24.         dom_tree = etree.HTML(html)
  25.         #获得十大的标题
  26.         title = dom_tree.xpath('//li[@id="topten"]/div[@class="widget-content"]/ul/li/@title')
  27.         #获得十大的url
  28.         urls = dom_tree.xpath('//li[@id="topten"]/div[@class="widget-content"]/ul/li/a/@href')
  29.         urls = ['https://bbs.byr.cn'+i for i in urls]
  30.         driver.close()
  31.         line = ''
  32.         for i in range(len(urls)):
  33.             line = line+str(i)+' : '+title[i]+'\n'
  34.         return line
  35. if __name__=='__main__':
  36.     print(byr_crawle().run())

上面的代码可以获取北邮人论坛十大的标题和链接。

我们也可以使用chrome浏览器来进行操作.

  1. driver = webdriver.Chrome()

 结语

虽说使用selenium可以爬取大部分的网站,但是这样导致的后果就是会导致代码的速度变慢,效率变低,因为需要模拟浏览器。所以大部分情况下,如果是做爬虫的话,我们会尽量减少这种方法的使用。

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2018年4月25日13:25:05
  • 转载请务必保留本文链接:https://mathpretty.com/9250.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: