当前位置:   article > 正文

利用python(selenium)爬取有道翻译英语单词音标_查找单词音标的函数是什么

查找单词音标的函数是什么

1、简述

python编一个爬虫小程序示例。通过爬取有道翻译网站页面信息,获取查询的英语单词的音标。

有道翻译网站url:https://fanyi.youdao.com/#/

2、工具软件

代码编写及测试软件:python3.12(python3.8.9)

selenium库 版本4.16.0

浏览器:chrome浏览器测试版

chrome浏览器驱动:chromedriver.exe

3、代码

(1)打开谷歌浏览器.py

  1. import os
  2. # 打天外部谷歌浏览器 port为tcp端口
  3. def open_chrome(port):
  4. #启动浏览器并开启远程调试
  5. #启动chrom浏览器,并开启port调试端口,该浏览器配置文件路径chrome\temp。对于--remote-debugging-port值,可以指定任何打开(0到65535)的端口。
  6. os.popen(r"start chrome\chrome.exe --remote-debugging-port={} --user-data-dir=temp".format(port))
'
运行

(2)爬取英语单词音标函数.py

  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.chrome.service import Service
  4. from time import sleep
  5. #爬取单词音标函数 port外部谷歌浏览器tcp端口
  6. def fangyi_youdao(port,word):
  7. #实例ch_options对象 ChromeOptions是chromedriver支持的浏览器启动选项
  8. ch_options = webdriver.ChromeOptions()
  9. # 通过端口port接管已打开的外部谷歌浏览器
  10. ch_options.add_experimental_option("debuggerAddress", f"127.0.0.1:{port}")
  11. #添加User-Agent Python的反爬虫机制
  12. ch_options.add_argument('User-Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"')
  13. # 禁用图片加载
  14. ch_options.add_argument('blink-settings=imagesEnabled=false')
  15. # 启动时,不激活(前置)窗口
  16. ch_options.add_argument('no-startup-window')
  17. # 禁用gpu渲染
  18. ch_options.add_argument('disable-gpu')
  19. #指定chromedriver.exe路径 chromedriver用于连接Chrome浏览器的驱动程序
  20. service = Service(executable_path=r'chrome\chromedriver.exe')
  21. #实例谷歌浏览器对象 Chrome浏览器的WebDriver对象
  22. driver = webdriver.Chrome(service=service, options=ch_options)
  23. # driver.refresh()
  24. #设置隐式等待时间训5秒。如果找不到元素,webdriver会等待5秒,直到元素出现或超时。
  25. driver.implicitly_wait(5)
  26. #设置浏览器 打开的位置 高度 宽度
  27. driver.set_window_rect(0, 0, 1290, 800)
  28. #打开有道翻译
  29. driver.get('https://fanyi.youdao.com/#/')
  30. # “翻译”按钮元素定位
  31. d=driver.find_element(By.XPATH,'//*[@id="app"]/div[1]/div/div[2]/div[2]/div/div[1]/div[1]/div[1]/div[1]/div[1]')
  32. #模拟单击“翻译”按钮
  33. d.click()
  34. #翻译文本录入框 元素定位
  35. d_word=driver.find_element(By.XPATH,'//*[@id="js_fanyi_input"]')
  36. #清空文本录入框
  37. d_word.clear()
  38. #模拟键盘录入要查询单词
  39. d_word.send_keys(word)
  40. sleep(1)
  41. #显示 单词音标的元素定位
  42. d_con=driver.find_element(By.XPATH,'//*[@id="app"]/div[1]/div/div[2]/div[2]/div/div[1]/div[1]/div[2]/div/div[2]/div[1]/div/div[1]/div[1]/ul')
  43. #返回单词音标
  44. return d_con.text.replace('\n','/' )+"/"
'
运行

(3)检查端口是否占用.py

  1. import socket
  2. def check_port(port):
  3. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  4. result = sock.connect_ex(('127.0.0.1', port))
  5. if result == 0:
  6. # print(f"端口 {port} 已在使用中")
  7. return 0
  8. else:
  9. # print(f"端口 {port} 未被使用")
  10. return 1
'
运行

(4)控制程序.py

  1. from 打开谷歌浏览器 import *
  2. from 爬取英语单词音标函数 import *
  3. from 检查端口是否占用 import *
  4. #控制端口
  5. port=60000
  6. #端口检测
  7. if check_port(port):
  8. #打开谷歌浏览器
  9. open_chrome(port)
  10. #等待查询单词列表
  11. words_list=['hello','world','well','check','print']
  12. #爬取音标
  13. for word in words_list:
  14. try:
  15. print(f'{word}<-->',fangyi_youdao(port,word))
  16. except:
  17. print(f'{word}查询异常')
  18. continue
  19. print('完成!')

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/855670
推荐阅读
相关标签
  

闽ICP备14008679号