这段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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐