selenium的基本用法
selenium需要配合一个driver 我使用的是chrome的driver 注意一定要下载对应浏览器版本的driver 否则会报错的
http://chromedriver.storage.googleapis.com/index.html
例如我的chrome的版本是67.xxx我选择的是2.38 最开始下载的2.39和我的版本不匹配,如果你也是这样,请多换几个版本
1.导入包
from selenium import webdriver
from scrapy.selector import Selector #这是调用选择器
建立一个brower path后面跟你的driver的地址,可以是绝对路径,要英文路径,我没试过中文的,经验告诉我,用英文
browser = webdriver.Chrome(executable_path='./chromedriver')
2.打开一个网页
browser.get("https://www.zhihu.com/signin")
print(browser.page_source) #获取页面的html文本配合selector使用
3模拟登录知乎
from selenium import webdriver from scrapy.selector import Selector import time browser = webdriver.Chrome(executable_path='./chromedriver') browser.get("https://www.zhihu.com/signin") browser.find_element_by_css_selector(".SignFlow-accountInput.Input-wrapper input[name='username']").send_keys("你的用户名") browser.find_element_by_css_selector(".Input-wrapper input[name='password']").send_keys('你的密码') time.sleep(5) #也许会出现验证码,得手动打码,或者你调用打码的api这边自己调 browser.find_element_by_css_selector(".SignFlow-submitButton").click() #模拟点击登录按钮
4模拟登录微博
from selenium import webdriver from scrapy.selector import Selector import time browser = webdriver.Chrome(executable_path='./chromedriver') browser.get("https://weibo.com/") time.sleep(5) browser.find_element_by_css_selector("#loginname").send_keys("你的用户名") browser.find_element_by_css_selector(".info_list.password input[name='password']").send_keys('你的密码') browser.find_element_by_css_selector(".W_btn_a.btn_32px[node-type='submitBtn']").click() #模拟点击登录
5修改selenium的默认配置不加载图片
from selenium import webdriver chrome_opt = webdriver.ChromeOptions() prefs={"profile.managed_default_content_settings.images":2} chrome_opt.add_experimental_option("prefs",prefs) browser = webdriver.Chrome(executable_path='./chromedriver',chrome_options=chrome_opt) browser.get("https://www.taobao.com")
6模拟下拉页面加载内容
from selenium import webdriver browser = webdriver.Chrome(executable_path='./chromedriver') browser.get("https://www.oschina.net/blog") for i in range(3): browser.execute_script("window.scrollTo(0,document.body.scrollHeight);var lenOfPage=document.body.srollHeight; return lenOfPage;") time.sleep(3)