python selenium模拟浏览器爬虫&交互动作
参考:https://www.cnblogs.com/zhaof/p/6953241.html
https://blog.csdn.net/One_of_them/article/details/82560880
- 首先安装
pip install selenium
- 去网站https://sites.google.com/a/chromium.org/chromedriver/downloads选75,因为我的chrome版本就75,直接下载win32,然后最好放到项目中,然后把放到环境变量中,linux建议**/usr/local/bin**
- 之后自己直接cmd执行下chromedriver看有反应吧
- 这个模拟浏览器就好了,自己执行吧
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import time
# 设置不跳chrome出来
chrome_opt = Options() # 创建参数设置对象.
# chrome_opt.add_argument('--headless') # 无界面化.
# chrome_opt.add_argument('--disable-gpu') # 配合上面的无界面化.
# chrome_opt.add_argument('--window-size=1366,768') # 设置窗口大小, 窗口大小会有影响.
# browser = webdriver.Chrome(chrome_options=chrome_opt)
browser = webdriver.Chrome(options=chrome_opt)
browser.get("http://www.jd.com")
# find1 = browser.find_element_by_id('q')
# find2 = browser.find_element_by_css_selector('#q')
# find3 = browser.find_element_by_xpath('//*[@id="q"]')
# find2 = browser.find_elements_by_css_selector('.service-bd li')
wait = WebDriverWait(browser, 2) # 等个2秒
# 下面是进化版(搜索ipad)
# searchInput = browser.find_element(By.ID, 'key')
# searchButton = browser.find_element_by_class_name('button')# 对应着上面的那个方法
# 下面是超进化版
searchInput = wait.until(EC.presence_of_element_located((By.ID, 'key'))) # 等待这个元素加载好了(只获得一个)
searchInput.send_keys('ipad')
searchButton = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.button'))) # 等待这个按钮可以点了
searchButton.click()
time.sleep(2)
# print(browser.page_source) # 这样是能获得到新页面的源码的
# print(browser.current_url) # 当前页面的网址
# 下面两个都是根据条件筛选
# li = browser.find_elements_by_css_selector('.gl-warp li .p-name')
# li = browser.find_elements(By.CSS_SELECTOR, '.gl-warp li .p-name')
# 拉倒最底部和操作js
# browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
# browser.execute_script('alert("To Bottom")')
#获取图片的地址src属性
oneImg = browser.find_element_by_css_selector('.shop-logo a img')
# oneImg = oneImg.get_attribute('src')
print(oneImg)
# browser.get_screenshot_as_file('C:/foo.png') # 当前页面截图
# brower.close()
mac版
因为之前版本是win的能实现,现在是mac遇到问题总结如下
phpstorm写pyhton不太方便,直接下载了pycharm用
在pycharm里将默认的2.7引擎改成了3.8,mac默认是2.7
下载了chromedriver后放到了/usr/local/bin里面后再执行
vi ~/.bash_profile
//然后添加如下一行
export PATH=$PATH:/usr/local/bin/chromedriver
// 执行生效
source ~/.bash_profile
// 本地测试
chromedriver --version
还是没找到然后我卸载了之前装的selenium,再重新安装了下
pip uninstall selenium
pip install selenium
最后成功