这段代码是一个用来从网站上爬取图片资源的Python脚本,网站是与”三国杀节气皮肤”有关的。
代码首先导入了需要的模块:urllib.request
用于发起网络请求,lxml.etree
用于处理HTML内容。然后,代码定义了一系列函数来处理请求、响应以及数据提取和存储。
在主函数部分,代码从用户那里获取起始页码和结束页码,然后循环遍历这些页码。对于每个页面,它会创建一个请求对象,发送请求获取页面内容,然后使用XPath表达式从页面内容中提取图片的URL和名称。最后,通过urllib.request.urlretrieve
函数将图片下载到指定的本地目录中。
需要注意以下几点:
- 该脚本没有错误处理机制。如果请求失败或者页面结构发生变化,代码可能会崩溃。
- 网站的爬取行为可能受到网站的使用条款限制,如果未经允许大量爬取,可能会被认为是不良行为。
- 代码中下载的文件名可能会导致重名,需要根据实际情况进行调整,确保文件名的唯一性。
请注意遵循合法、合规的网络爬取实践,并尊重网站的使用条款。如果您计划使用这个脚本来爬取网站,请务必获得网站所有者的允许。
下面是修改后的代码
import urllib.request
from lxml import etree
import datetime
def create_request(page):
if page == 1:
url = "https://www.sanguosha.cn/pc/wallpaper.html?type=1"
else:
url = "https://www.sanguosha.cn/pc/wallpaper.html?type=1&page=" + str(page)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/115.0.0.0 Safari/537.36"}
request = urllib.request.Request(url=url, headers=headers)
return request
def response_url(request):
response = urllib.request.urlopen(request)
content = response.read().decode("utf-8")
return content
def data_lod(content, current_time):
global num
tree = etree.HTML(content)
https_list = tree.xpath("//ul[2]//@data-cross")
name_list = tree.xpath("//ul[2]//@alt")
for i in range(len(name_list)):
base_url = https_list[i]
name = name_list[i]
num += 1
data_url = "https://www.sanguosha.cn" + base_url
file_name = f"D:/三国杀节气皮肤/{name}_{current_time}_{num}.jpg"
urllib.request.urlretrieve(url=data_url, filename=file_name)
if __name__ == '__main__':
num = 0
begin_page = int(input("请输入起始页码:"))
end_page = int(input("请输入结束页码:"))
current_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
for page in range(begin_page, end_page + 1):
request = create_request(page)
content = response_url(request)
data_lod(content, current_time)
评论前必须登录!
注册