Python selenium操作网页笔记

    xiaoxiao2021-12-14  22

    这次是在Ubuntu16.04上进行的,使用selenium之前,你先得将Firefox或者Chrome或者IE的驱动放进/usr/bin里面,我用的是Ubuntu自带的Firefox,然后Firefox的驱动在这里下 Mozilla Github这里

    64位的就选64位,32位的Linux应该很少了吧,然后解压cp进/usr/bin

    selenium各函数使用说明

    现在网上的教程基本都是你抄我的,我抄你的,百度出来的都是千篇一律的,没啥价值,所以同学百度可以,要适度哦

    这是python-selenium的官方文档地址python-selenium

    安装selenium:

    sudo pip install selenium

    官方文档呢只是大概的讲了一下,其实selenium可没有他们说的那么简单

    第一步:打开一个网页

    这一步呢是新建一个空白的网页窗口

    我们先导入模块,这一步很重要

    from selenium import webdriver

    然后使用webdriver打开Firefox

    driver = webdriver.Firefox()

    Chrome么就

    driver = webdriver.Chrome()

    不过一样的你都得下他们的驱动放进/usr/bin

    到这里还是不会出来web浏览器窗口的 然后我们打开一个网页,这里以淘宝为掩饰

    driver.get("https://www.taobao.com")

    然后这个时候,就会自动用Firefox打开了淘宝的页面

    第一步完成

    第二步:driver的操作

    我们可以看一下淘宝的title是什么

    title = driver.title s = title.encode("utf-8") print s

    下面是我当时操作时候的输入输出

    >>> driver = webdriver.Firefox() >>> driver.get("https://www.taobao.com") >>> title = driver.title >>> title.encode("utf-8") '\xe6\xb7\x98\xe5\xae\x9d\xe7\xbd\x91 - \xe6\xb7\x98\xef\xbc\x81\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2' >>> print title 淘宝网 - 淘!我喜欢

    用selenium最重要的是要记得解码,因为title返回的Unicode,然后是没法输出中文的,所以这里加了一个解码,这是在python2.x中,3.x好像方法换了

    1. driver.current_url

    这是返回当前所在网页的URL的

    >>> driver.current_url u'https://www.taobao.com/' >>>

    2. driver.close()

    这是关闭当前页面的,比如你一个Firefox打开了很多页面,这是关闭当前页面的,要想关闭打开的Firefox,用方法3

    3. driver.quit()

    这就是将Firefox直接关闭

    4. driver.current_window_handle

    前面不是说,你打开了很多页面吗,这是获取你当前页面handle的

    >>> driver.current_window_handle u'2147483649' >>>

    一般就是用这个来定位当前的页面,然后在不同页面之间做切换,怎么切换,看下面

    5. dirver.switch_to_window(args *window_handle)

    上面不是得到一个window handle了吗,你可以从最后介绍那个10.函数返回的当前handle列表里面选择一个handle,然后把他传进参数里面,driver就可以切换到那个页面

    6. driver.get(args *url)

    这个不用说了吧,打开一个网页

    7. driver.title

    返回网页的title,记得解码

    8. driver.get_cookies()

    获得当前页面的cookies

    >>> c = driver.get_cookies() >>> c [{u'domain': u'.taobao.com', u'secure': False, u'value': u'cn', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'thw'}, {u'domain': u'www.taobao.com', u'secure': False, u'value': u'dw:1920&dh:950&pw:1920&ph:950&ist:0', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'_med'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'0', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'v'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'1caee2ae81e41ea28739ca4d84e3770d', u'expiry': None, u'path': u'/', u'httpOnly': True, u'name': u'cookie2'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'193cd88d532ec07d17c993b706481253', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u't'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'B4rGEMrmAEECAXBziEByBkK1', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'cna'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'Ara22fu6y3-0uopHvyoKNvjaBue41/oR', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'l'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'Ap2dqHwZmQPXl30vUxrYiXPurXBcstEMj8zaxV9i2fQjFr1IJwrh3GsEJrDv', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'isg'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'ci=-1_1', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'mt'}] >>> type(c) <type 'list'> >>> for i in c: ... print i ... {u'domain': u'.taobao.com', u'secure': False, u'value': u'cn', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'thw'} {u'domain': u'www.taobao.com', u'secure': False, u'value': u'dw:1920&dh:950&pw:1920&ph:950&ist:0', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'_med'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'0', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'v'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'1caee2ae81e41ea28739ca4d84e3770d', u'expiry': None, u'path': u'/', u'httpOnly': True, u'name': u'cookie2'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'193cd88d532ec07d17c993b706481253', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u't'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'B4rGEMrmAEECAXBziEByBkK1', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'cna'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'Ara22fu6y3-0uopHvyoKNvjaBue41/oR', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'l'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'Ap2dqHwZmQPXl30vUxrYiXPurXBcstEMj8zaxV9i2fQjFr1IJwrh3GsEJrDv', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'isg'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'ci=-1_1', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'mt'}

    返回的是用list包起来的dict

    9. driver.implicitly_wait(args *time)

    这是driver等待结果多少秒,如果没有出现,就不等了,这个一般是用在用css selector或者xpath选取元素时候以免等待时间过长用的

    10. driver.window_handles

    这是返回用selenium打开的Firefox里面现在有多少个子页面的,每个页面对应一个handle

    >>> driver.window_handles [u'2147483649', u'2147483685']

    这个说明我现在打开了两个页面,一般你第一个打开的页面会放在list[0]里,也就是第一个,然后依次打开,依次的append进去list里面

    其他的在官方文档里都有介绍,selenium最强大的功能还是find_element系列函数,这个官方文档有详细介绍,抓页面的时候简直是神器,好了就说这么多,有关更多selenium的问题,邮件联系我。

    super_big_hero@sina.com

    原文地址 http://write.blog.csdn.net/mdeditor#!postId=53431946

    转载请注明原文地址: https://ju.6miu.com/read-962127.html

    最新回复(0)