赞
踩
这段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`包,通过获取网页上的图片链接并下载到本地实现了图片爬取的功能。
- import time
-
- # pip install
- # webdriver-manager
- # selenium
- # pyperclip
- # pywinauto
-
- # http://datasite.jumpw.com/data/info-heros 此网址F12 console 执行 下面代码得到 如下网址
- # var doc_ob=document.querySelector("#hero_box")
- # var num =doc_ob.childElementCount
- #
- # for (let i = 0; i < num; i++) {
- # console.log(doc_ob.children[i].children[0].getAttribute("href"))
- # }
- #
-
-
-
-
-
- head_url="http://datasite.jumpw.com"
-
-
- from selenium import webdriver
- from webdriver_manager.chrome import ChromeDriverManager
- from selenium.webdriver.chrome.options import Options
- # 导入keys类包
- # import pyperclip
- # from pywinauto.keyboard import send_keys
-
- # 合成urls
- # url_list=[head_url+i for i in list_url.split()]
-
- # 获取链接的js代码
- js_code="""
- func (){
- var doc_ob = document.querySelector("body > div.index-owl > div.owl-nav.owl-banner > div");
- var num =doc_ob.childElementCount;
- var url_list=[];
- for (let i = 0; i < num; i++) {
- url_list.push(doc_ob.children[i].children[0].children[0].getAttribute("src"))
- };
- return url_list;
- }
- """
-
- # 设置打开浏览器
- options = Options()
- options.add_argument("--start-maximized")
- options.add_experimental_option(
- 'excludeSwitches', ['enable-logging', 'enable-automation'])
- options.add_argument("profile-directory={profile}")
- options.add_argument("--incognito")
- chrome_dir=r"C:/Users/Administrator/AppData/Local/Google Chrome/Chromebin/chrome.exe"
- # chrome = Application(backend='uia')
-
- options.binary_location = chrome_dir
-
- browser_driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
- # pyperclip.copy(js_code)
-
- # from pywinauto import Application
-
- # from pywinauto import mouse
- # import pyautogui
- # import time
- # import pyperclip
- import requests
- import re
- with open("result_url.text","r",encoding="utf-8") as f:
- url_list = f.readlines()
-
- for j,i in enumerate(url_list):
- # html=chrome.start(chrome_dir + ' --force-renderer-accessibility --incognito --start-maximized ' + i, timeout=5)
- browser_driver.get(i.strip())
- # num=browser_driver.execute_script("""return document.querySelector("#ssr-content > div._2jN0Z > div > div.EaCvy > div:nth-child(2) > div._2Zphx").outerHTML""")
- # 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
-
- # 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""")
- try:
- 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""")
- ul=re.compile("https\:\/\/pics.{9,61}").findall(num)
- for jj,onl in enumerate(ul):
- if ".jpe" in onl:
-
- onl=onl.replace(".jpe",".jpeg")
- image = requests.get(onl).content
- with open("E:/tuku/baidu/2_{}_{}.{}".format(j,jj,onl.strip().split(".")[-1]), "wb") as f:
- f.write(image)
- time.sleep(1)
-
- with open("result_url.txt", "a", encoding="utf-8") as f:
- f.writelines([i+"\r" for i in ul])
- except:
- pass
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。