通过python+selenium如何操作浏览器f12调试js打开F12-手机调试模式。

selenium+python 爬取网络图片(1)
做图像处理的朋友,都时常需要收集整理大量的图像数据集。做科研时有各种现有的标准数据集大家都直接拿来用,但是工程上却经常需要自己收集图片,从网上爬取图片
做图像处理的朋友,都时常需要收集整理大量的图像数据集。做科研时有各种现有的标准数据集大家都直接拿来用,但是工程上却经常需要自己收集图片,从网上爬取图片便成了比较常见的任务。为了用python完成这个任务,需要解决如下两个问题:
1. 图片素材源自哪里呢?第一直觉就是搜索引擎里的图片,,比如要收集手机的图片,则进入搜索引擎搜索关键字即可得到大量相关图片。
2. 动态网站的内容往往是通过ajax异步加载,直接用python中urllib库read到的内容不完整,且需要的内容基本都是异步加载进来的,直接获取不到。当然,有些任务可能只需处理些静态网页,但不幸的是,现在动态网页基本是主流,且我们爬图片的网站图片基本都是ajax加载的。所以如何解决爬取动态网站的问题呢?回答是采用selenium库模拟浏览器打开网页加载完全后再处理。这个解决方案可以参考博文,该文总结了4中方案,其中使用selenium比较适合这个任务。
本篇文章给出基于soso搜索引擎的图片爬虫程序,对google和360的好搜方式相同。但是爬百度的稍微麻烦点,参见另一篇博文《selenium+python 爬取网络图片(2) -- 百度》。
首先,进入soso搜索,输入查询词“手机”,出现大量手机图片,如图
上图中网址栏的地址就是待爬取网页的url,然后给出python结合selenium爬取图片的代码如下
from selenium import webdriver
import time
import urllib
# 爬取页面地址
url = '?query=%CA%D6%BB%FA&w=&p=&_asf=&_ast=&sc=index&sut=1376&sst0=8'
# 目标元素的xpath
xpath = '//div[@id=&imgid&]/ul/li/a/img'
# 启动Firefox浏览器
driver = webdriver.Firefox()
# 最大化窗口,因为每一次爬取只能看到视窗内的图片
driver.maximize_window()
# 记录下载过的图片地址,避免重复下载
img_url_dic = {}
# 浏览器打开爬取页面
driver.get(url)
# 模拟滚动窗口以浏览下载更多图片
m = 0 # 图片编号
for i in range(10):
pos += i*500 # 每次下滚500
js = &document.documentElement.scrollTop=%d& % pos
driver.execute_script(js)
time.sleep(1)
for element in driver.find_elements_by_xpath(xpath):
img_url = element.get_attribute('src')
# 保存图片到指定路径
if img_url != None and not img_url_dic.has_key(img_url):
img_url_dic[img_url] = ''
ext = img_url.split('.')[-1]
filename = str(m) + '.' + ext
#保存图片数据
data = urllib.urlopen(img_url).read()
f = open('./yourfolder/' + filename, 'wb')
f.write(data)
driver.close()
上面的代码只下载了第一页,selenium还可以模拟点击网页触发加载更多图片。此外,保存图像的代码段也可以简化成一句
urllib.urlretrieve(img_url, './yourfolder/%s' % filename)
最后,爬取出来的图片如下图所示,下一篇介绍如何爬取百度图片。
你最喜欢的Python + Selenium 做 Web UI 自动化测试时上传、下载文件对话框的操作 | 闲逸笔记
keep it simple & stupid
Selenium 是基于 JavaScript 的库,对于浏览器弹出的上传、下载文件对话框不支持。但在 Windows 操作系统中,可以通过 PyWin32 库操作对话框。
当然,对于 &input type="file" /&控件,直接通过 send_keys() 即可上传。
1. 安装相关库
因为有 Windows 系统相关的交互,通过 PIP 难以安装。直接下载 exe 可执行程序进行安装。
# -*- coding: utf-8 -*-
import win32gui
import SendKeys
import time
class WindowFinder:
"""Class to find and make focus on a particular Native OS dialog/Window """
def __init__ (self):
self._handle = None
def find_window(self, class_name, window_name = None):
"""Pass a window class name & window name directly if known to get the window """
self._handle = win32gui.FindWindow(class_name, window_name)
def _window_enum_callback(self, hwnd, wildcard):
'''Call back func which checks each open window and matches the name of window using reg ex'''
if re.match(wildcard, str(win32gui.GetWindowText(hwnd))) != None:
self._handle = hwnd
def find_window_wildcard(self, wildcard):
""" This function takes a string as input and calls EnumWindows to enumerate through all open windows """
self._handle = None
win32gui.EnumWindows(self._window_enum_callback, wildcard)
def set_foreground(self):
"""Get the focus on the desired open window"""
win32gui.SetForegroundWindow(self._handle)
def send_keys_to_dialog(title=r".*Upload.*", key_valus=r""):
win_dialog = WindowFinder()
win_dialog.find_window_wildcard(title)
win_dialog.set_foreground()
time.sleep(2)
SendKeys.SendKeys(key_valus)
SendKeys.SendKeys("{ENTER}")
if __name__ == "__main__":
send_keys_to_dialog(u"Open", r"E:\documents\Selenium.docx")
传递两个参数:"对话框标题" 及 "文件路径",即可。
3. 参考资料
Permalink []
有QQ吗? 我想跟你详细请教下这个Python处理windows对话框的问题,拜托了!
抱歉这个还真没有。只有博客里讲到的这些。@_@
而且目前已经出到 Python 3.6 和 Selenium 3.0 版本了,这套框架很多设计方面需要提高,最近挺忙的,我有时间会尽量更新。
工具而已,没必要纠结这些事情。哪个顺手用哪个。先把 Python 用熟练了,IDE 可以随时换,换起来也很容易。新手的话尤其不要在这种无聊的事情上浪费时间。
我也很 low,但我觉得 low 不 low 是写代码的水平,跟 IDE 完全没关系。;)
eclipse + PyDev 插件的开发环境我已经写过很多项目了,不管代码水平如何,这个开发环境对我来说足够了,所以也一直没有换。PyCharm 是收费的,刚刚查了下有社区免费版的,但 eclipse 一直用的挺好,就懒得换了。有那个精力还不如好好看看代码。
如果方便求一份knitter代码详细一点的使用说明文档,非常感谢!
Anna 评论了
你好,Henry
我想请教一个比较初级的问题,Python自动化选择开发工具,那么我该选择Eclipse 还是选择pycharm,Python技术讨论群里面建议使用pycharm,说是low人才用那个,我有点动摇了,因为个人比较喜欢Eclipse编码,两者之间优势在哪里我了解不多,因为我对pycharm还不太了解,个人较为喜欢Eclipse编码
Anna 评论了连载|鬼知道我经历了什么,才把自动化测试环境搞定python+selenium - 简书
连载|鬼知道我经历了什么,才把自动化测试环境搞定python+selenium
图片发自简书App
上篇回顾:软件测试有三大块,分别为功能测试、自动化测试、性能测试。软件测试刚开始做的功能测试,主要测试业务,之后做了性能测试。有心学习,可公司一直没用到自动化测试,有段时间打算跳槽,就心血来潮自学自动化测试。现在公司为了压价,不管工作内容有木有涉及代码,要求测试人员既懂自动化测试又懂性能测试。每次看到公司软件测试招聘信息都很愤怒。既要会写代码,又要会测试,既要会自动化,又要会性能,您咋不直接招个开发人员呢。谁让别人是老板呢,我们只能自己多多学习。自动化测试顾名思义把以人为驱动的测试转化为机器执行。就是说测试人员编写测试脚本、准备测试数据,一切准备就绪,测试人员可以一边喝着咖啡一边听着歌,脚本执行完查看日志和数据库里数据就可以。之前实习时,培训老师给讲了自动化测试工具QTP,我下载电脑上打算好好学习一番,万万没想到脚本一执行,电脑立马死机。一度想过报班学习,想起在学校时的经历,老师讲给你听,听后得自己动手练习。培训班周期过长,不适合我这种急性子人士,只能猫电脑前查资料学习。开始网上搜索答案,自动化测试工具、脚本等,看到了有关python、splinter、selenium组合的自动化测试。python语法简单清晰,编写脚本最好的语言,也听同事说过python很好用也易学。selenium是一套完整的web应用程序测试系统,包含脚本录制、编写、运行等,默认火狐浏览器,可以自动生成python脚本。splinter对已有的自动化工具(如:selenium)进行抽象,形成一个全新的上层应用api,使web自动化测试脚本变得更容易。万事开头难,首先是学习python语言,今天先介绍如何创建自动化测试环境,主要学习web自动化测试。既然是web端测试,脚本首先得调用浏览器,市面上浏览器很多,主要介绍3款默认firefox浏览器、ie浏览器、chrome浏览器。我通过网上查资料默默的总结了搭一套自动化测试环境用到的软件和一些注意事项。脚本访问,当然了如果你自己学习,可以任意网站。以下就是调通的脚本访问的126邮箱,python+splinter+浏览器驱动器、python+selenium+浏览器驱动器。首先用到的软件python-2.7.12.exe (这个版本不需要下载pip);setuptools-0.6c11.win32-py2.7.exe;splinter-0.7.3;selenium-2.47.1;浏览器驱动器:chromedriver.exe 、IEDriverServer.exe;浏览器下载:IE Chrome Firefox;安装软件1、双击python-2.7.12.exe,安装完成后路径
C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Python272、setuptools-0.6c11.win32-py2.7.exe,默认路径就可以,C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Python27\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Lib\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\sitepackages;必须安装setuptools,是因为selenium、splinter的安装文件setup.py中使用。3、添加环境变量;C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Python27;C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Python27\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\S必须添加环境变量后在安装splinter、selenium。4、下载splinter-0.7.3.rar,然后解压。命令行进入splinter-0.7.3目录,然后执行命令python setup.py install (注意:先安装python2.7)5、下载selenium-2.47.1.rar,然后解压。命令行进入selenium-2.47.1目录,然后执行命令python setup.py install (注意:先安装python2.7)6、安装chrome webdriver,把chromedriver.exe文件copy到Python的安装目录下C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Python27。7、安装ie webdriver,把IEDriverServer.exe文件copy到Python的安装目录下C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Python27。设置IE浏览器,Internet选项安全,Internet、本地Internet、受信任的站点、受限制的站点保护模式全部设为启用。备注:没有添加环境变量之前使用python setup.py install一直报错python不是内部或外部命令。splinter模块调用浏览器以下所有脚本使用的是python自带的集成开发编辑器IDLE1、默认的火狐浏览器
firefox调用成功
2、调用chrome浏览器
chrome调用成功
3、调用ie浏览器
ie调用成功
备注:设置IE浏览器,Internet选项安全,Internet、本地Internet、受信任的站点、受限制的站点保护模式全部设为启用。 切记切记。selenium模块调用浏览器1、默认的火狐浏览器
firefox调用成功
2、chrome浏览器
chrome调用成功
3、ie浏览器
ie调用成功
第一次执行报错信息:
保护模式报错信息
注意:我们自己执行时最好用默认的火狐浏览器,不推荐使用ie。刚设置好的保护模式不知不觉又被谁篡改了,chrome也可以用。最好下载selenium插件,selenium+firefox可以录制脚本,在你不会写脚本时可以帮你一把。之后的自动化测试文章更新开发环境信息主要为:python+selenium+firefox,以为基点录制脚本,参数化脚本以及执行脚本,添加log信息查看执行过程。自动化测试我也是新手,慢慢摸索中,希望对小白入门有帮助。我现在知道的就这么多了,自学自动化测试,查资料、调环境,鬼知道我经历了什么!!想要成为牛人,最终都会上升到技术,测试也一样,抓紧时间学点开发知识,最好熟悉一门语言,比如python;努力自学中;调查一下:这是你想要的web自动化测试小白入门吗?小白测试系列连载中…有些文章会有一些逻辑颠倒问题,我实时发现实时修改,简书是最新版。谢谢阅读,如文中有一个字一句话触动到你,留个喜欢可好?}

我要回帖

更多关于 谷歌浏览器f12调试 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信