selenium+phantomjs selenium怎么用多线程

Selenium+PhantomJS(系列一:设置User-Agent) - 为程序员服务
Selenium+PhantomJS(系列一:设置User-Agent)
Selenium+PhantomJS系列教程:
Selenium+PhantomJS(系列一:设置User-Agent)
有些网站的WebServer对User-Agent有限制,可能会拒绝不熟悉的User-Agent的访问,所以,写Web自动化代码可能需要将User-Agent稍微伪装一下,否则可能会被拒绝访问。这里简单记录一下Selenium中使用PhantomJS,设置User-Agent的方法。
python下Selenium依赖:
sudo pip install selenium
默认情况下,是没有自动设置User-Agent的,默认的User-Agent显示为PhantomJS;设置PhantomJS的user-agent,是要设置“phantomjs.page.settings.userAgent”这个desired_capability:
Created on Dec 6, 2013
@author: Jay
@summary: Set user-agent before using PhantomJS to get a web page.
from selenium import webdriver
from mon.desired_capabilities import DesiredCapabilities
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (M Intel Mac OS X 10.9; rv:25.0) Gecko/ Firefox/25.0 "
driver = webdriver.PhantomJS(executable_path='./phantomjs', desired_capabilities=dcap)
driver.get("/")
cap_dict = driver.desired_capabilities
for key in cap_dict:
print '%s: %s' % (key, cap_dict[key])
print driver.current_url
driver.quit
执行后输出如下:
jay@Jay-Air:~/workspace/python_study/dp/qa/2013/12 $python user_agent_phantomjs.py
rotatable: False
takesScreenshot: True
acceptSslCerts: False
browserConnectionEnabled: False
javascriptEnabled: True
driverVersion: 1.0.3
databaseEnabled: False
locationContextEnabled: False
platform: mac-unknown-32bit
browserName: phantomjs
version: 1.9.1
driverName: ghostdriver
nativeEvents: True
phantomjs.page.settings.userAgent: Mozilla/5.0 (M Intel Mac OS X 10.9; rv:25.0) Gecko/ Firefox/25.0
applicationCacheEnabled: False
webStorageEnabled: False
proxy: {u'proxyType': u'direct'}
handlesAlerts: False
cssSelectorsEnabled: True
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (M Intel Mac OS X 10.9; rv:25.0) Gecko/ Firefox/25.0 "
driver = webdriver.PhantomJS(executable_path='./phantomjs', desired_capabilities=dcap)
也可通过添加以下代码观察是否成功:
agent = browser.execute_script("return navigator.userAgent")
print agent
设置好后,就可以访问了。通过Selenium可以非常方便的渲染出所需的页面。
关注cplusplus,关注互联网,关注路由与交换.程序员的历程.
原文地址:, 感谢原作者分享。
您可能感兴趣的代码Selenium+PhantomJS打造不宜被封的爬虫6收藏分享举报文章被以下专栏收录一起每周进步一点点推荐阅读{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&每周至少推送一篇高质量技术文字,有问题或建议欢迎私信&,&permission&:&COLUMN_PUBLIC&,&memberId&:,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&一起每周进步一点点&,&urlToken&:&c_&,&id&:29554,&imagePath&:&v2-10fbb832a06facedfcc17d.jpg&,&slug&:&c_&,&applyReason&:&0&,&name&:&每周一个小项目&,&title&:&每周一个小项目&,&url&:&https:\u002F\\u002Fc_&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:135,&avatar&:{&id&:&v2-10fbb832a06facedfcc17d&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\\u002Fv2-10fbb832a06facedfcc17d_l.jpg&,&articlesCount&:11},&state&:&accepted&,&targetPost&:{&titleImage&:&&,&lastUpdated&:,&imagePath&:&&,&permission&:&ARTICLE_PUBLIC&,&topics&:[872,27],&summary&:&\u003Cb\u003E写在之前\u003C\u002Fb\u003E 人总是有些懒惰的,总是回想提笔写一些东西,然而又总是搁置。开设专栏的审核终于批下来了,想鞭策一下自己,至少每周输出一篇文章,写给所有与我一样走在奋斗路上的你。\u003Cb\u003E前言\u003C\u002Fb\u003E 知乎上爬虫的文章多之又多,随手一搜,各类的都有。但是与国内的技术博…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T22:31:09+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:2372848,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&Selenium+PhantomJS打造不宜被封的爬虫&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:29554,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&&,&author&:{&bio&:&我突然发现这条才是自我介绍&,&isFollowing&:false,&hash&:&fcdbf72ca41f590e4ea7b8b&,&uid&:763300,&isOrg&:false,&slug&:&hou-zi-xi-ren&,&isFollowed&:false,&description&:&在菊花厂不加班&,&name&:&猴子猎人&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fhou-zi-xi-ren&,&avatar&:{&id&:&v2-69a80d3a204eea4d81da49d&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:561905}],&title&:&Selenium+PhantomJS打造不宜被封的爬虫&,&author&:&hou-zi-xi-ren&,&content&:&\u003Ch2\u003E\u003Cb\u003E写在之前\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E
人总是有些懒惰的,总是回想提笔写一些东西,然而又总是搁置。开设专栏的审核终于批下来了,想鞭策一下自己,至少每周输出一篇文章,写给所有与我一样走在奋斗路上的你。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E前言\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E
知乎上爬虫的文章多之又多,随手一搜,各类的都有。但是与国内的技术博客有同样的缺陷——原创新较低,使用的版本也较旧。所以我想自己维护一个专栏,把我平时踩过的坑,碰到过的问题都记录一下,大家共同学习,希望屏幕前的你能喜欢。在每篇文后,我都会附上我的源码地址,可以的话随手点进我的没有前端的小博客哦。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E为什么选择Selenium+PhantomJS\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Col\u003E\u003Cli\u003EPhantomJS是一个能够解析JS的,运行在后台的浏览器。其实用firefox或者是chrome也是没有问题的啦,只是你会在爬取过程中一直不断的跳出窗口来,非常的烦,但是很便于调试。爬虫运行时还是选择PhantomJS作为我们的浏览器。\u003C\u002Fli\u003E\u003Cli\u003ESelenium严格来说并不是一个专门用作爬虫的框架,他主要是用于前端的自动化测试。因此它的爬取其实是“手动”的一个个点进去网页,并且抓取元素的。分析一下Selenium的优劣势。缺点就在于比较的慢,比直接request慢相当的多,之后我会谈到使用消息队列也就是多进程来增加其效率。优势在于入门简单,因为你只是让计算机做你做的事情,并且能够爬取动态网页,能在框中填入文字等等。当然因为你是模拟人的动作,并且爬取速度并不会很快,能够搞定相当一部分的反爬虫机制。\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Cbr\u003E\u003Ch2\u003E\u003Cb\u003E之后的文章安排\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E在本周六,我会推送我的第一篇文章——《Selenium入门》,主要以我对Selenium常用的一些类与方法,以及对其官方文档的一些翻译。预计3篇左右的篇幅完成对Selenium的了解以及对官方文档,常用API的翻译。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E如果这篇文章出现在你的TimeLine上,请给我一个关注好吗!\u003C\u002Fp\u003E&,&updated&:new Date(&T14:31:09.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:5,&collapsedCount&:0,&likeCount&:6,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Python&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&爬虫&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Python 入门&}],&adminClosedComment&:false,&titleImageSize&:{&width&:0,&height&:0},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&column&:{&slug&:&c_&,&name&:&每周一个小项目&},&tipjarState&:&inactivated&,&annotationAction&:[],&sourceUrl&:&&,&pageCommentsCount&:5,&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T22:31:09+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[{&bio&:null,&isFollowing&:false,&hash&:&472fb32c10&,&uid&:139900,&isOrg&:false,&slug&:&da-guo-89-81&,&isFollowed&:false,&description&:&&,&name&:&达锅&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fda-guo-89-81&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&重度选择障碍患者&,&isFollowing&:false,&hash&:&e34fb2cbb3746843eaadd&,&uid&:32,&isOrg&:false,&slug&:&xu-zi-ke-54&,&isFollowed&:false,&description&:&&,&name&:&徐子轲&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fxu-zi-ke-54&,&avatar&:{&id&:&238bb646e1&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&年纪越大胆量越小&,&isFollowing&:false,&hash&:&53fc9a34f973d79f526a12443f9cebbd&,&uid&:20,&isOrg&:false,&slug&:&peng-ai-15&,&isFollowed&:false,&description&:&&,&name&:&东海名珠&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fpeng-ai-15&,&avatar&:{&id&:&b35e54d1fd11eb&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&病娇&,&isFollowing&:false,&hash&:&95eb7e8a2a7d44aff68cb6bd&,&uid&:517900,&isOrg&:false,&slug&:&neza-72&,&isFollowed&:false,&description&:&记得当初你侬我侬 车如流水马如龙&,&name&:&阿栗色&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fneza-72&,&avatar&:{&id&:&v2-fe5f0fb25c1edbf760dde44ce6516525&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&IT&,&isFollowing&:false,&hash&:&7abc3e6a8c887&,&uid&:64,&isOrg&:false,&slug&:&chen-ji-10-27&,&isFollowed&:false,&description&:&&,&name&:&春春&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fchen-ji-10-27&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}],&summary&:&\u003Cb\u003E写在之前\u003C\u002Fb\u003E 人总是有些懒惰的,总是回想提笔写一些东西,然而又总是搁置。开设专栏的审核终于批下来了,想鞭策一下自己,至少每周输出一篇文章,写给所有与我一样走在奋斗路上的你。\u003Cb\u003E前言\u003C\u002Fb\u003E 知乎上爬虫的文章多之又多,随手一搜,各类的都有。但是与国内的技术博…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:{&isTitleImageFullScreen&:true,&rating&:&none&,&titleImage&:&https:\u002F\\u002F50\u002Fv2-546c671faed4bfe4f40a4_xl.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Python&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&爬虫&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Python 入门&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&我突然发现这条才是自我介绍&,&isFollowing&:false,&hash&:&fcdbf72ca41f590e4ea7b8b&,&uid&:763300,&isOrg&:false,&slug&:&hou-zi-xi-ren&,&isFollowed&:false,&description&:&在菊花厂不加班&,&name&:&猴子猎人&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fhou-zi-xi-ren&,&avatar&:{&id&:&v2-69a80d3a204eea4d81da49d&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&c_&,&name&:&每周一个小项目&},&content&:&抱歉昨日出了一下门,拖更了一天。\u003Cp\u003E我认为学习一个python的包的最佳方式就是查看他的官方文档,之后在细节实现的方面再查看源码加以更深入的理解。因此第一次更新我将带来selenium的installation与getting started部分。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E安装\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E首先是需要再python中安装selenium包,推荐使用pip安装\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Epip install selenium\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E上文提到selenium其实是一个自动化的工具,因此他需要运行在一个浏览器的驱动程序中,推荐大家使用chrome的驱动进行调试,因为能在运行中查看到所有的步骤,下载地址如下。\u003C\u002Fp\u003E\u003Cstrong\u003EChrome\u003C\u002Fstrong\u003E:\u003Ca class=\& external\& href=\&http:\u002F\\u002F?target=https%3A\u002F\\u002Fa\u002Fchromium.org\u002Fchromedriver\u002Fdownloads\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E\u003Cspan class=\&invisible\&\u003Ehttps:\u002F\u002F\u003C\u002Fspan\u003E\u003Cspan class=\&visible\&\\u002Fa\u002Fchro\u003C\u002Fspan\u003E\u003Cspan class=\&invisible\&\u003Emium.org\u002Fchromedriver\u002Fdownloads\u003C\u002Fspan\u003E\u003Cspan class=\&ellipsis\&\u003E\u003C\u002Fspan\u003E\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E但是使用chrome也是又缺点的,就是占用系统资源太多,因此在之后我们会选用phantomJS作为运行的浏览器,但是在调试过程中还是推荐chrome。\u003Cp\u003E总结一下步骤:\u003C\u002Fp\u003E\u003Col\u003E\u003Cli\u003E安装python的selenium包\u003C\u002Fli\u003E\u003Cli\u003E安装浏览器驱动程序并添加进PATH中,推荐chrome与phantomJS\u003Cbr\u003E\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Cbr\u003E\u003Ch2\u003E\u003Cb\u003E开始使用\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E首先我们先来看一个官方的小例子,每一行都写了注释帮助新手理解\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&c1\&\u003E# webdriver就是我们的模拟浏览器驱动\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Efrom\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Eselenium\u003C\u002Fspan\u003E \u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ewebdriver\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# Keys 是用作关键词输入\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Efrom\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\mon.keys\u003C\u002Fspan\u003E \u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003EKeys\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&c1\&\u003E# 首先指定driver的浏览器,官方使用的是firefox\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Edriver\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ewebdriver\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EFirefox\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# 驱动的get方法即为打开这个网页\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Edriver\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eget\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&http:\u002F\u002Fwww.python.org\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# 确定python在网页源码的title中,即没有打开错网页\u003C\u002Fspan\u003E\n\u003Cspan class=\&k\&\u003Eassert\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&Python\&\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Edriver\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etitle\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# 找到name为\&q\&的元素\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Eelem\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Edriver\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efind_element_by_name\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&q\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# 清除框内内容\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Eelem\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eclear\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# 在框中填入关键词\&pycon\&并且发送\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Eelem\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esend_keys\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&pycon\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# 获得返回值\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Eelem\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esend_keys\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EKeys\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ERETURN\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# 确定返回值并不是没有找到结果\u003C\u002Fspan\u003E\n\u003Cspan class=\&k\&\u003Eassert\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&No results found.\&\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Enot\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Edriver\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epage_source\u003C\u002Fspan\u003E\n\u003Cspan class=\&c1\&\u003E# 关闭浏览器驱动,非常重要,不然相当于打开了一个网页没有关闭\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Edriver\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eclose\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E这就是一个简单的示范,用selenium模拟打开了python的官网并进行了一次搜索。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E总结一下,本文简单介绍了selenium的安装以及开始使用的第一个小程序。希望大家能对其有一个简单的认识。在下周的更新中将更新selenium的一些小细节的导航以及元素定位的方法。预计更新时间下周三。\u003C\u002Fb\u003E\u003C\u002Fp\u003E&,&state&:&published&,&sourceUrl&:&&,&pageCommentsCount&:0,&canComment&:false,&snapshotUrl&:&&,&slug&:,&publishedTime&:&T11:49:44+08:00&,&url&:&\u002Fp\u002F&,&title&:&Selenium入门(1)--安装与开始&,&summary&:&抱歉昨日出了一下门,拖更了一天。我认为学习一个python的包的最佳方式就是查看他的官方文档,之后在细节实现的方面再查看源码加以更深入的理解。因此第一次更新我将带来selenium的installation与getting started部分。\u003Cb\u003E安装\u003C\u002Fb\u003E首先是需要再python中安装seleniu…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&commentPermission&:&anyone&,&commentsCount&:1,&likesCount&:4}},&annotationDetail&:null,&commentsCount&:5,&likesCount&:6,&FULLINFO&:true}},&User&:{&hou-zi-xi-ren&:{&isFollowed&:false,&name&:&猴子猎人&,&headline&:&在菊花厂不加班&,&avatarUrl&:&https:\u002F\\u002F50\u002Fv2-69a80d3a204eea4d81da49d_s.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&hou-zi-xi-ren&,&bio&:&我突然发现这条才是自我介绍&,&hash&:&fcdbf72ca41f590e4ea7b8b&,&uid&:763300,&isOrg&:false,&description&:&在菊花厂不加班&,&badge&:{&identity&:null,&bestAnswerer&:null},&profileUrl&:&https:\u002F\\u002Fpeople\u002Fhou-zi-xi-ren&,&avatar&:{&id&:&v2-69a80d3a204eea4d81da49d&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&nwebStickySidebar&:&sticky&,&androidPassThroughPush&:&all&,&newMore&:&new&,&liveReviewBuyBar&:&live_review_buy_bar_2&,&liveStore&:&ls_a2_b2_c1_f2&,&qawebThumbnailAbtest&:&old&,&searchHybridTabs&:&without-tabs&,&iOSEnableFeedModuleWWANAritclePreRender&:&iOS_FeedModule_WWAN_PreRender_Enable&,&isOffice&:&false&,&liveDetailWechatBanner&:&Live_detail_wechat_banner_1&,&newLiveFeedMediacard&:&old&,&homeUi2&:&default&,&showVideoUploadAttention&:&false&,&recommendationAbtest&:&new&,&marketTab&:&market_tab_old&,&qrcodeLogin&:&qrcode&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&newMobileColumnAppheader&:&new_header&,&androidDbRecommendAction&:&open&,&zcmLighting&:&zcm&,&favAct&:&default&,&appStoreRateDialog&:&close&,&mobileQaPageProxyHeifetz&:&m_qa_page_nweb&,&default&:&None&,&androidDbFeedRepinSelection&:&open&,&wechatShareModal&:&wechat_share_modal_show&,&qaStickySidebar&:&sticky_sidebar&,&androidProfilePanel&:&panel_b&,&nwebWriteAnswer&:&experiment&}},&columns&:{&next&:{},&c_&:{&following&:false,&canManage&:false,&href&:&\u002Fapi\u002Fcolumns\u002Fc_&,&name&:&每周一个小项目&,&creator&:{&slug&:&hou-zi-xi-ren&},&url&:&\u002Fc_&,&slug&:&c_&,&avatar&:{&id&:&v2-10fbb832a06facedfcc17d&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&}}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&switches&:{&couldSetPoster&:false},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null}},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{&baidu&:false,&yidianzixun&:false,&qqnews&:false},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false,&userAgent&:{&ua&:&Mozilla\u002F5.0 (compatible, MSIE 11, Windows NT 6.3; Trident\u002F7.0; rv:11.0) like Gecko&,&browser&:{&name&:&IE&,&version&:&11&,&major&:&11&},&engine&:{&version&:&7.0&,&name&:&Trident&},&os&:{&name&:&Windows&,&version&:&8.1&},&device&:{},&cpu&:{}}},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}

我要回帖

更多关于 selenium 多线程出错 的文章

 

随机推荐