鼠标行为链
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 定位输入框
inputTag = driver.find_element_by_id('kw')
# 定位百度按钮
buttonTag = driver.find_element_by_id('su')
# 实例化对象
actions = ActionChains(driver)
# 输入内容
actions.send_keys_to_element(inputTag, '小红')
sleep(1)
actions.move_to_element(buttonTag).click()
actions.perform()
selenium操作多窗口
# 多窗口操作
driver.execute_script('window.open("https://www.douban.com")')
sleep(1)
driver.close() # 操作的一直是第一个网页
# 切换界面
driver.switch_to.window(driver.window_handles[1])
print(driver.current_url)
selenium高级用法
1 html = drvier.page_source # HTML结构源码
2 find() # 在HTML结构源码当中查找某个字符是否存在
3 find_elenent_by_llink_text(‘链接文本’)
4 node.get_attribute(‘属性名’) # 可以获取节点的属性值
5 node.text # 获取节点的文本内容 (包含子节点和后代节点)
driver.get('https://maoyan.com/')
sleep(1)
# 找到页面资源
html = driver.page_source
# print(html)
# 找到字符存在
# print(html.find('大树下的守望')) # 结果显示162416 一个数字
# print(html.find('哒哒哒哒哒奥多')) # 找不到返回 -1
# 找到标签属性
imageTag = driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/div/div[1]/div[2]/dl/dd[2]/div/a/div/img[2]')
# src = imageTag.get_attribute('src')
# print(src)
猫眼电影爬取
需求:爬取猫眼电影TOP100榜单信息(电影排名 电影名称 主演 上映时间 评分) 翻页
第一步 页面结构分析
通过分析 每一部电影的数据都在dd标签里面,那么第一页的10部电影的数据都是在dl标签当中
第二步 实现步骤
参考代码
from selenium import webdriver
# 设置无头模式
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.get('https://maoyan.com/board/4')
def parse():
dd_list = driver.find_elements_by_xpath('//dl[@class="board-wrapper"]/dd')
for dd in dd_list:
film_data = dd.text.split('\n')
item = {
'rank': film_data[0].strip(),
'name': film_data[1].strip(),
'actor': film_data[2].strip(),
'time': film_data[3].strip(),
'score': film_data[4].strip()
}
print(item)
while True:
parse()
try:
driver.find_element_by_link_text('下一页').click()
except Exception as e:
driver.quit()
京东数据爬取
需求: 价格 名称 评价 店铺
第一步 页面结构分析
通过分析每一本书都是一个li标签 那么这页所有的数据都是在一个ul标签里面
京东的数据页面 上来回加载一部分数据(30个) 剩下的一部分数据 通过拖动滚轮然后缓缓的加载出来 (60个)
思路
1 先打开网站 https://www.jd.com/
2 输入内容(爬虫书)
3 点击搜索
4 想办法把滚轮拖动到最后
5 爬取数据/解析数据
一些翻页的逻辑 如何做判断。 具体情况具体分析。你要总结
第二步 实现步骤
pass
from selenium import webdriver
from time import sleep
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(options=options)
driver.get('https://www.jd.com/')
driver.find_element_by_id('key').send_keys('爬虫书')
sleep(1)
driver.find_element_by_class_name("button").click()
sleep(1)
def onepage():
# 移动到底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
sleep(2)
divs = driver.find_elements_by_xpath('//ul[@class="gl-warp clearfix"]/li/div')
for div in divs:
item = {
'price': div.find_element_by_class_name('p-price').text.strip(),
'name': div.find_element_by_class_name('p-name').text.strip(),
'commit': div.find_element_by_class_name('p-commit').text.strip(),
'shop': div.find_element_by_class_name('p-shopnum').text.strip(),
}
print(item)
while True:
sourse = driver.page_source
onepage()
if sourse.find('pn-next disabled') == -1:
driver.find_element_by_xpath('//*[@id="J_bottomPage"]/span[1]/a[9]').click()
sleep(1)
else:
break