[{"data":1,"prerenderedAt":63},["ShallowReactive",2],{"article-42":3},{"code":4,"msg":5,"data":6,"count":14},200,"查询成功",{"id":7,"title":8,"keywords":9,"description":10,"category_id":11,"content":12,"body_html":13,"thumb_up":14,"clicks":15,"sort":14,"remark":16,"status":17,"is_open":17,"is_deleted":14,"is_top":14,"is_recommend":14,"create_time":18,"update_time":19,"image_id":20,"url":13,"member_id":14,"cate_name":21,"prev":22,"next":25,"tags":28,"words":34,"read_time":35,"comments":14,"cover":36,"relevant":37},42,"Selenium知识点整理之安装入门","Selenium,Python,爬虫","Selenium是一个Web的自动化测试工具，最初是为网站自动化测试而开发的，类型像我们玩游戏用的按键精灵，可以按指定的命令自动操作，不同是Selenium 可以直接运行在浏览器上，它支持所有主流的浏览器（包括PhantomJS这些无界面的浏览器）。",5,"##### Selenium\n\nSelenium是一个Web的自动化测试工具，最初是为网站自动化测试而开发的，类型像我们玩游戏用的按键精灵，可以按指定的命令自动操作，\n\n不同是Selenium 可以直接运行在浏览器上，它支持所有主流的浏览器（包括PhantomJS这些无界面的浏览器）。\n\nSelenium 自己不带浏览器，不支持浏览器的功能，它需要与第三方浏览器结合在一起才能使用。\n\n但是我们有时候需要让它内嵌在代码中运行，所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。\n\n安装\n\n```python\npip install selenium\n```\n##### PhantomJS\n\nPhantomJS 是一个基于Webkit的“无界面”(headless)浏览器，它会把网站加载到内存并执行页面上的 JavaScript，\n\n因为不会展示图形界面，所以运行起来比完整的浏览器要高效。\n\n安装\n\n根据地址下载，并且配置到系统变量中\n```bash\nhttp:\u002F\u002Fphantomjs.org\u002Fdownload.html\n```\n##### 入门\n\n直接上代码\n\n```python\n# 导入 webdriver\nfrom selenium import webdriver\n\n# 要想调用键盘按键操作需要引入keys包\nfrom selenium.webdriver.common.keys import Keys\n\n# 调用环境变量指定的PhantomJS浏览器创建浏览器对象\ndriver = webdriver.PhantomJS()\n\n# 如果没有在环境变量指定PhantomJS位置\n# driver = webdriver.PhantomJS(executable_path=\".\u002Fphantomjs\"))\n\n# get方法会一直等到页面被完全加载，然后才会继续程序，通常测试会在这里选择 time.sleep(2)\ndriver.get(\"http:\u002F\u002Fwww.baidu.com\u002F\")\n\n# 获取页面名为 wrapper的id标签的文本内容\ndata = driver.find_element_by_id(\"wrapper\").text\n\n# 打印数据内容\nprint(data)\n\n# 打印页面标题 \"百度一下，你就知道\"\nprint(driver.title)\n\n# 生成当前页面快照并保存\ndriver.save_screenshot(\"baidu.png\")\n\n# id=\"kw\"是百度搜索输入框，输入字符串\"长城\"\ndriver.find_element_by_id(\"kw\").send_keys(u\"长城\")\n\n# id=\"su\"是百度搜索按钮，click() 是模拟点击\ndriver.find_element_by_id(\"su\").click()\n\n# 获取新的页面快照\ndriver.save_screenshot(\"长城.png\")\n\n# 打印网页渲染后的源代码\nprint driver.page_source\n\n# 获取当前页面Cookie\nprint driver.get_cookies()\n\n# ctrl+a 全选输入框内容\ndriver.find_element_by_id(\"kw\").send_keys(Keys.CONTROL,'a')\n\n# ctrl+x 剪切输入框内容\ndriver.find_element_by_id(\"kw\").send_keys(Keys.CONTROL,'x')\n\n# 输入框重新输入内容\ndriver.find_element_by_id(\"kw\").send_keys(\"itcast\")\n\n# 模拟Enter回车键\ndriver.find_element_by_id(\"su\").send_keys(Keys.RETURN)\n\n# 清除输入框内容\ndriver.find_element_by_id(\"kw\").clear()\n\n# 生成新的页面快照\ndriver.save_screenshot(\"itcast.png\")\n\n# 获取当前url\nprint(driver.current_url)\n\n# 关闭当前页面，如果只有一个页面，会关闭浏览器\n# driver.close()\n\n# 关闭浏览器\ndriver.quit()\n```",null,0,499,"",1,"2019-02-25 22:23:55","2026-04-19 10:46:42",135,"Python",{"id":23,"title":24},41,"沙伯特钢件加工信息化管理系统",{"id":26,"title":27},43,"整理一波PHP计算时间的方法",[29,31],{"id":30,"name":21},27,{"id":32,"name":33},51,"爬虫",1386,3,"https:\u002F\u002Ftp.myong.top\u002Fstorage\u002Farticle\u002Fc5\u002F22a0e715e916985d7738d131d3b31b.jpg",[38,43,48,53,58],{"id":39,"title":40,"create_time":41,"description":42},95,"Django启用memcache缓存","2020-10-23 11:17:27","在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面.当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力.",{"id":44,"title":45,"create_time":46,"description":47},91,"用Python实现编程语言 20 年的动态排行榜","2020-06-24 16:06:54","爬取一下，自2001年5月至今，TIOBE 编程语言排行榜上编程语言的变化情况，看一下在接近20年的时间里，编程语言的热度是如何变化的。\r\n",{"id":49,"title":50,"create_time":51,"description":52},100,"re正则表达式","2021-07-10 18:09:52","正则表达式是一个特殊的字符序列，它能帮助你方便的检查一个字符串是否与某种模式匹配，本文罗列re正则表达式中，常用的匹配符号。",{"id":54,"title":55,"create_time":56,"description":57},34,"Python基础整理之列表常见操作","2019-02-10 16:53:55","列表是最常用的Python数据类型，它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型",{"id":59,"title":60,"create_time":61,"description":62},63,"Python与mysqldump的数据库备份","2019-10-14 15:35:33","mysqldump是备份MySQL数据库的一种好工具。它相对于用phpmyadmin等备份工具更加快速，又避免受php.ini等的限制，在windows系统下还可以结合计划任务实现定时远程备份数据库",1783431666499]