当前位置:   article > 正文

python selenium 不用下载驱动且能执行js 代码爬取网页_selenium最新版不需要驱动

selenium最新版不需要驱动

这段Python代码主要实现的功能是爬取指定网页上的图片链接,并从链接中获取图片并保存到本地的指定路径。代码首先导入了所需的几个Python包,包括在上网过程中需要用到的`requests`包、`re`包用于匹配字符串以及在浏览器中爬取网页需要用到的`selenium`包。代码中使用了`selenium`包中的`webdriver`类来指定使用的浏览器驱动,这里用的是Chrome浏览器,所以还需要安装

webdriver-manager

来获取Chrome浏览器驱动。

接下来代码打开了一个文件`result_url.text`,读取了其中的每一行链接,并通过`browser_driver.get()`方法在浏览器中打开了该链接,进入相应网页进行操作。然后使用JavaScript代码在当前网页上查找对应的HTML元素,并提取出其中的图片链接。需要注意的是,这里使用正则表达式匹配链接时,对`.jpe`做了处理,将其替换为`.jpeg`,这是为了统一链接的格式。在获取到链接后,使用`requests`包中的`get()`方法从链接中获取图片的内容,并使用Python内置模块`os`中的`open()`方法打开对应路径的文件并将获取到的图片内容写入。在每次写入图片时,代码都使用了`time`包中的`sleep()`方法来暂停一秒钟,这是为了避免网络请求过于频繁,导致服务器封禁爬虫。

总的来说,这段Python代码通过结合`selenium`包和`requests`包,通过获取网页上的图片链接并下载到本地实现了图片爬取的功能。

  1. import time
  2. # pip install
  3. # webdriver-manager
  4. # selenium
  5. # pyperclip
  6. # pywinauto
  7. # http://datasite.jumpw.com/data/info-heros 此网址F12 console 执行 下面代码得到 如下网址
  8. # var doc_ob=document.querySelector("#hero_box")
  9. # var num =doc_ob.childElementCount
  10. #
  11. # for (let i = 0; i < num; i++) {
  12. # console.log(doc_ob.children[i].children[0].getAttribute("href"))
  13. # }
  14. #
  15. head_url="http://datasite.jumpw.com"
  16. from selenium import webdriver
  17. from webdriver_manager.chrome import ChromeDriverManager
  18. from selenium.webdriver.chrome.options import Options
  19. # 导入keys类包
  20. # import pyperclip
  21. # from pywinauto.keyboard import send_keys
  22. # 合成urls
  23. # url_list=[head_url+i for i in list_url.split()]
  24. # 获取链接的js代码
  25. js_code="""
  26. func (){
  27. var doc_ob = document.querySelector("body > div.index-owl > div.owl-nav.owl-banner > div");
  28. var num =doc_ob.childElementCount;
  29. var url_list=[];
  30. for (let i = 0; i < num; i++) {
  31. url_list.push(doc_ob.children[i].children[0].children[0].getAttribute("src"))
  32. };
  33. return url_list;
  34. }
  35. """
  36. # 设置打开浏览器
  37. options = Options()
  38. options.add_argument("--start-maximized")
  39. options.add_experimental_option(
  40. 'excludeSwitches', ['enable-logging', 'enable-automation'])
  41. options.add_argument("profile-directory={profile}")
  42. options.add_argument("--incognito")
  43. chrome_dir=r"C:/Users/Administrator/AppData/Local/Google Chrome/Chromebin/chrome.exe"
  44. # chrome = Application(backend='uia')
  45. options.binary_location = chrome_dir
  46. browser_driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
  47. # pyperclip.copy(js_code)
  48. # from pywinauto import Application
  49. # from pywinauto import mouse
  50. # import pyautogui
  51. # import time
  52. # import pyperclip
  53. import requests
  54. import re
  55. with open("result_url.text","r",encoding="utf-8") as f:
  56. url_list = f.readlines()
  57. for j,i in enumerate(url_list):
  58. # html=chrome.start(chrome_dir + ' --force-renderer-accessibility --incognito --start-maximized ' + i, timeout=5)
  59. browser_driver.get(i.strip())
  60. # num=browser_driver.execute_script("""return document.querySelector("#ssr-content > div._2jN0Z > div > div.EaCvy > div:nth-child(2) > div._2Zphx").outerHTML""")
  61. # document.querySelector("#app > div > div.app-module_contentWrapper_12u0y > div > div.app-module_leftSection_2GBVu > div.index-module_articleContainer_32gOp > div.index-module_contentContainer_3mQeg > div > div > div > div > div > div > div").outerHTML
  62. # num=browser_driver.execute_script("""document.querySelector("#app > div > div.app-module_contentWrapper_12u0y > div > div.app-module_leftSection_2GBVu > div.index-module_articleContainer_32gOp > div.index-module_contentContainer_3mQeg > div > div > div > div > div > div > div").outerHTML""")
  63. try:
  64. num=browser_driver.execute_script("""return document.querySelector("#app > div > div.app-module_contentWrapper_12u0y > div > div.app-module_leftSection_2GBVu > div.index-module_articleContainer_32gOp > div.index-module_contentContainer_3mQeg > div > div > div > div > div > div > div").outerHTML""")
  65. ul=re.compile("https\:\/\/pics.{9,61}").findall(num)
  66. for jj,onl in enumerate(ul):
  67. if ".jpe" in onl:
  68. onl=onl.replace(".jpe",".jpeg")
  69. image = requests.get(onl).content
  70. with open("E:/tuku/baidu/2_{}_{}.{}".format(j,jj,onl.strip().split(".")[-1]), "wb") as f:
  71. f.write(image)
  72. time.sleep(1)
  73. with open("result_url.txt", "a", encoding="utf-8") as f:
  74. f.writelines([i+"\r" for i in ul])
  75. except:
  76. pass

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

闽ICP备14008679号