python selenium介绍

  • A+
所属分类:Python库介绍
摘要这一篇文章介绍一下selenium的使用,并给出一个例子,使用selenium来爬取北邮人论坛的十大。主要还是熟悉一下selenium的使用。

简介

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

python selenium介绍

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

关于chrome浏览器的插件下载chromedriver : https://github.com/bayandin/chromedriver

示例代码

  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())

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

结语

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

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

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