栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

拿下ABB需要多少代码!《abb机器人资料》

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

拿下ABB需要多少代码!《abb机器人资料》

拿下ABB资源需要多久? 用python告诉你 只需要200秒! --------------------------------------------------------------------------------- 成品预览 资源图片

代码块预览

运行成功后代码

过程难点

1.正则匹配时犯的错误
2.爬虫时遇到的反爬机制
3.文件名因为粗心导致debug了两个小时

代码:
import requests
import re
import os
import random
import time
import threading
import urllib3
from urllib.parse import quote

urllib3.disable_warnings()
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}  # 常规请求头
up_url = "https://new.abb.com/products/robotics/zh/industrial-robots/"
up_url1 = "https://new.abb.com"

# 定义一个生成四位随机数并×当前的秒数的函数
def get_random_num():
    return str(random.randint(1, 9) * int(time.time()))
# 文件夹创建
def if_exists(path):
    if not os.path.exists(path):
        os.makedirs(path)
# 获取所有的类型
def get_mian_rb():
    mian_url = "https://new.abb.com/products/robotics/zh/industrial-robots"  # 首页地址
    robot_type_all = requests.get(mian_url, headers=headers, verify=False)
    re_rb = re.findall('http://kaotopstatic.cdn.bcebos.com/skin/sinaskin/image/nopic.gif',
                       robot_type_all.text)  # 获取所有的机器人类型
    re_url = re.findall(', robot_type_all.text)  # 获取所有的机器人类型的链接
    del re_rb[0]  # 删除第一个元素
    del re_url[0]  # 删除第一个元素
    print("全部机器人已获取成功")
    return re_rb, re_url  # 返回所有的机器人类型和链接
# 获取所有的图片的连接
def get_png_url(rb_url):
    response = requests.get(up_url1 + rb_url, headers=headers, verify=False)
    rb_photo = re.findall(
        " ",
        response.text)  # 图片库
    rb_one_photo = re.findall('

, response.text) # 首页横屏图片 pid = re.findall('cid":"http://kaotopstatic.cdn.bcebos.com/skin/sinaskin/image/nopic.gif"', response.text) # 访问js的pid if len(rb_photo) != 0: print("已获取" + rb + "的图片库" + rb_photo[0]) if len(rb_one_photo) != 0: print("已获取" + rb + "的首页横屏图片" + rb_one_photo[0]) else: # 如果方法1没成功调用方法2再次匹配 rb_one_photo = re.findall(', response.text) # 首页横屏图片 if len(pid) != 0: print("已获取" + rb + "的pid" + pid[0]) return rb_photo, rb_one_photo, pid # 获取pdf的连接 def get_pdf_url(js_url, url): url = quote(url, 'utf-8') # 防止机器人名称中中文, 进行编码 js_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", "Referer": url # 防盗链操作 } response = requests.get(js_url, headers=js_headers, verify=False) pdf_info = re.findall( 'RepresentationFileName": "http://kaotopstatic.cdn.bcebos.com/skin/sinaskin/image/nopic.gif"[sS]*?"Title": "http://kaotopstatic.cdn.bcebos.com/skin/sinaskin/image/nopic.gif"[sS]*?"DocumentURL": "http://kaotopstatic.cdn.bcebos.com/skin/sinaskin/image/nopic.gif"[sS]*?RepresentationFileSize', response.text) print("PDF资料已获取成功") pdf_url_list1 = [] pdf_name_list1 = [] file_type_list1 = [] for i in pdf_info: # 判断i包含 =zh关键字 也就是中文文档 if 'zh' in i[2]: pdf_url_list1.append(i[2]) pdf_name_list1.append(i[1]) file_type_list1.append(i[0]) return pdf_url_list1, pdf_name_list1, file_type_list1 # 下载图片 def down_png(png_url, rb): if png_url is None: # 如果是空的直接退出 return response = requests.get(png_url, headers=headers, verify=False) with_file = "ABB资源\" + rb + "\" + get_random_num() + ".png" # 文件存放路径 with open(with_file, "wb") as f: f.write(response.content) print("已下载成功" + rb + "的图片 路径为:" + with_file) # 下载pdf def down_pdf(pdf_url, pdf_name, rb, url): url = quote(url, 'utf-8') # 防止机器人名称中中文, 进行编码 js_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", "Referer": url # 防盗链操作 } response = requests.get(pdf_url, headers=js_headers, verify=False) down_url = re.findall('