这段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
版权归原作者 东方佑 所有, 如有侵权,请联系我们删除。