一。安装selenium pip install selenium javascript
二。安装相应浏览器的Driver(selenium 文档) http://selenium-python.readthedocs.io/api.html 推荐使用Chromecss
三。selenium的使用html
1 # -*- coding: utf-8 -*- 2 3 from selenium import webdriver 4 from scrapy.selector import Selector 5 6 7 #知乎的模拟登陆 8 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe") #路径是chromedriver.exe的存放的位置 9 browser.get("https://www.zhihu.com/#signin") 10 browser.find_element_by_css_selector(".view-signin input[name='account']").send_keys("********") #账号 11 browser.find_element_by_css_selector(".view-signin input[name='password']").send_keys("********") #密码 12 browser.find_element_by_id("captcha").send_keys(input('请输入验证码:')) 13 browser.find_element_by_css_selector(".view-signin button.sign-button").click() #登陆 14 browser.quit() 15 16 实例二: 17 #能够用selenium获得js加载后的html,好比这样的话能够抓取到原本抓取的不到的一些字段(淘宝的交易量等等) 18 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe") 19 browser.get("https://detail.tmall.com/item.htm?spm=a230r.1.14.3.yYBVG6&id=538286972599&cm_id=140105335569ed55e27b&abbucket=15&sku_properties=10004:709990523;5919063:6536025") 20 print(browser.page_source) #page_source就是js加载完的源代码 21 #browser.quit() 22 ''' 23 若是是用selenium自己的选择器(python写的,比较慢),会很慢 24 因此如今转换成scrapy中的selector(他是用c语言写的,很快) 25 模版,也能够嵌入scrapy中 26 ''' 27 t_selector=Selector(text=browser.page_source) 28 print(t_selector.xpath('//*[@id="J_StrPriceModBox"]/dd/span/text()').extract())
有时会遇到取不到内容的状况,看看是否是还没加载完毕,在中间sleep() 几秒就行了。java
四。selenium模拟登陆微博,模拟鼠标下拉node
微博也有开放的API:http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5python
1 #selenium 完成微博模拟登陆 2 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe") 3 browser.get("http://weibo.com/") 4 import time 5 time.sleep(5) 6 browser.find_element_by_css_selector("#loginname").send_keys("******") 7 browser.find_element_by_css_selector(".info_list.password input[node-type='password']").send_keys("******") 8 browser.find_element_by_css_selector(".info_list.login_btn a[node-type='submitBtn']").click() 9 #下拉 10 for i in range(3): 11 '''三次下拉操做,这是javascript的知识 execute_script是用来执行js代码的'''
12 browser.execute_script("window.scrollTo(0, document.body.scrollHeight); var lenOfPage=document.body.scrollHeight; return lenOfPage;") 13 time.sleep(3)
五。chromedrive 不加载图片,phantomjs获取动态网页web
chromedriver不加载图片:chrome
1 #设置chromedriver不加载图片 2 #是固定的模板 3 chrome_opt=wibdriver.ChromeOptions() 4 prefs={"profile.managed_default_content_settings.images":2} 5 chrome_opt.add_experimental_option("prefs",prefs) 6 browser=webdriver.Chrome(executable_path="E:/chromedriver.exe",chrome_options=chrome_opt) 7 browser.get("http://weibo.com")
六。phantomjs获取动态网页:windows
下载地址:http://phantomjs.org/download.html 若是不能下载,复制连接到迅雷下载api
淘宝的详情页实例
1 #phantomjs, 无界面的浏览器, 多进程状况下phantomjs性能会降低很严重 2 browser = webdriver.PhantomJS(executable_path="F:/迅雷下载/phantomjs-2.1.1-windows/bin/phantomjs.exe") 3 browser.get("https://detail.tmall.com/item.htm?spm=a230r.1.14.3.yYBVG6&id=538286972599&cm_id=140105335569ed55e27b&abbucket=15&sku_properties=10004:709990523;5919063:6536025") 4 print (browser.page_source) 5 browser.quit()
关于selenium的我推荐虫师的教程,仍是很不错的。「UI 测试自动化selenium」汇总
本人知识学习的总结者