python爬虫第十四讲 - selenium下

鼠标行为链

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yerennuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值