要用Python操控Chrome浏览器进行网页操作,首先需要安装selenium库,可以通过以下命令进行安装:
pip install selenium
安装完毕后,按照以下步骤进行操作:
1. 导入库和设置浏览器
from selenium import webdriver
# 设置 Chrome 选项
chrome_options = webdriver.ChromeOptions()
# 使用无头模式(不打开浏览器窗口)
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
# 创建一个 Chrome 浏览器实例
browser = webdriver.Chrome(chrome_options=chrome_options)
2. 打开网页
url = 'https://www.baidu.com'
browser.get(url)
3. 定位元素
定位元素是进行网页操作的重要步骤,selenium支持多种元素定位方式:
- 通过 id 找元素:
find_element_by_id()
- 通过 name 找元素:
find_element_by_name()
- 通过 class 找元素:
find_element_by_class_name()
- 通过 tag name 找元素:
find_element_by_tag_name()
- 通过 link text 找元素:
find_element_by_link_text()
- 通过 partial link text 找元素:
find_element_by_partial_link_text()
- 通过 CSS selector 找元素:
find_element_by_css_selector()
- 通过 XPath 找元素:
find_element_by_xpath()
以定位百度搜索框并输入内容为例:
# 定位输入框并输入内容
search_box = browser.find_element_by_id('kw')
search_box.send_keys('Python')
# 提交表单
search_box.submit()
4. 等待元素出现
由于网页加载速度和网络环境的影响,在进行元素定位时,需要等待元素加载完成后再进行后续操作。可以使用 selenium.webdriver.support.ui.WebDriverWait
类实现等待。
等待页面加载完成的示例:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 等待10秒,直到页面标题中出现某个关键字
wait = WebDriverWait(browser, 10)
wait.until(EC.title_contains('Python'))
5. 获取元素属性和内容
获取元素属性和内容是进行网页操作的常用操作,可以使用 get_attribute()
和 text
属性获取。
获取搜索结果中第一条结果的链接地址和标题为例:
# 获取第一条搜索结果的链接地址和标题
result = browser.find_element_by_xpath('//div[@class="result c-container new-pmd"]/h3/a')
link = result.get_attribute('href')
title = result.text
6. 关闭浏览器
浏览器操作完成后,需要关闭浏览器:
browser.quit()
以上就是使用Python操控Chrome浏览器进行网页操作的完整攻略。下面是两个示例说明:
示例1:获取百度搜索关键字的搜索结果数量
from selenium import webdriver
# 设置 Chrome 选项
chrome_options = webdriver.ChromeOptions()
# 使用无头模式(不打开浏览器窗口)
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
# 创建一个 Chrome 浏览器实例
browser = webdriver.Chrome(chrome_options=chrome_options)
# 打开百度首页
url = 'https://www.baidu.com'
browser.get(url)
# 输入搜索关键字
search_box = browser.find_element_by_id('kw')
search_box.send_keys('Python')
# 提交表单
search_box.submit()
# 等待页面加载完成
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(browser, 10)
wait.until(EC.title_contains('Python'))
# 获取搜索结果数量
result = browser.find_element_by_xpath('//*[@id="container"]/div[2]/div/div[1]/div[3]/div[1]/span[1]')
count = result.text.strip()
print(f'搜索结果共 {count} 条')
# 关闭浏览器
browser.quit()
示例2:抓取豆瓣电影TOP250的电影信息
from selenium import webdriver
# 设置 Chrome 选项
chrome_options = webdriver.ChromeOptions()
# 使用无头模式(不打开浏览器窗口)
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
# 创建一个 Chrome 浏览器实例
browser = webdriver.Chrome(chrome_options=chrome_options)
# 打开豆瓣电影 TOP250 页面
url = 'https://movie.douban.com/top250'
browser.get(url)
# 定位电影列表并依次抓取数据
movies = browser.find_elements_by_xpath('//*[@id="content"]/div/div[1]/ol/li')
for movie in movies:
# 电影名称
name = movie.find_element_by_xpath('.//span[@class="title"][1]')
name = name.text
# 导演、演员、类型
info = movie.find_element_by_xpath('.//div[@class="bd"]/p[1]')
info = info.text.split('\n')
director = info[0].split(':')[1].strip()
actors = info[1].split(':')[1].strip()
genre = info[2].strip()
# 评分
rate = movie.find_element_by_xpath('.//span[@class="rating_num"]')
rate = rate.text
# 输出信息
print(f'{name}\t{director}\t{actors}\t{genre}\t{rate}')
# 关闭浏览器
browser.quit()
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python操控Chrome浏览器进行网页操作 - Python技术站