selenium学习
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import threading
import time
def run_in_thread(keyword, thread_id):
print(f"Thread {thread_id} is running")
driver = webdriver.Chrome() # 创建Chrome浏览器实例
driver.get('https://www.google.com') # 打开谷歌首页
search = driver.find_element_by_name('q') # 找到搜索框元素
# 除了使用find_element_by_name()方法,还可以使用其他方法,
# 如find_element_by_xpath()、find_element_by_id()、
# find_element_by_link_text()、find_element_by_class_name()、find_element_by_css_selector()等
# driver.find_element(By.NAME, 'q') 通过By类来定位元素
# driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input') 通过xpath定位元素
# driver.find_element_by_id('APjFqb') 通过id定位元素
# driver.find_element_by_link_text('Google Apps') 通过链接文本定位元素
# driver.find_element_by_partial_link_text()link_text('Google Apps') 通过部分链接文本定位元素
# driver.find_element_by_class_name('gLFyf') 通过 class name定位元素
# driver.find_element_by_css_selector('input[name="q"]') 通过 css selector定位元素
# driver.find_element_by_tag_name('div') # 通过 tag name定位元素,目标元素在html中是唯一标签或者是html标签的首个
search.send_keys(keyword + Keys.RETURN) # 在搜索框中输入"selenium python"关键字
# driver.forward() #模拟浏览器前进操作
# driver.back() # 模拟浏览器后退操作
time.sleep(5) # 等待5秒
driver.save_screenshot(f'../ret/{keyword}.png')
with open(f'../ret/{thread_id}.html', 'w', encoding='utf-8') as f:
f.write(driver.page_source) # 保存当前页面的HTML源代码到文件
print(driver.current_url) # 打印当前页面的HTML源代码
print(driver.title)
driver.quit()
# 创建两个线程,分别执行run_in_thread函数
t1 = threading.Thread(target=run_in_thread, args=('gundam', 1))
t2 = threading.Thread(target=run_in_thread, args=('python', 2))
t1.start()
t2.start()
t1.join()
t2.join()
Chrome开发者模式下元素定位
点击即可通过定位指定元素,定位对应的原始xpath
pycharm个人常用快捷键
- alt+←/→ 切换前后标签页
- clt+alt+←/→ 返回光标前/后一处位置
- shift+clt+enter 另起一行
- F1 运行(本人习惯)
- clt+w 单词扩展选取 能够快速选中一个变量名或是函数名,好用