当前位置: 首页 > news >正文

网站版块策划中国机械加工行业的现状

网站版块策划,中国机械加工行业的现状,WordPress修改注册界面,木门行业做网站有什么好处参考大哥#xff0c;感谢大哥#xff1a;https://blog.csdn.net/weixin_43498642/article/details/136896338 【任务目标】 工作需要想更方便地下载汽车之家某车系配置清单#xff1b;#xff08;垃圾汽车之家不给下载导出表格#xff0c;配置页叉掉了车系要出来还要重新…参考大哥感谢大哥https://blog.csdn.net/weixin_43498642/article/details/136896338 【任务目标】 工作需要想更方便地下载汽车之家某车系配置清单垃圾汽车之家不给下载导出表格配置页叉掉了车系要出来还要重新刷新懂不懂用户体验 每一个车系保存为一个Excel表格表格命名为“品牌名车系”。 同品牌的配置表保存到以品牌命名的文件夹中。 【实现效果】 【难点痛点】 1、跳过这条发疯真的好难找参考代码可恶找到的这个大哥文章还给锁了痛失两百多下头csdn你欠我的用什么还你有本事后面别把我的锁成vip 2、第一次爬不知道干啥源代码找不到表内数据不知道在哪找参考大哥代码一步步做发现数据似乎没有被加密后面在响应里找到JSON格式的api文档直接获取数据。 3、多数据在表内换行格式的调整用’\n’链接多行数据openpyxl 设置表内换行。 【逻辑整理】 1、在产品库中利用左侧品牌列表接口获取所有品牌车系名称和id值 2、解析各个车系的名称和id值用于构建请求车系配置的url 3、通过响应页找到配置url根据要找的车系id值构建url从而得到配置数据 4、调整格式导出文件 【代码实现】 根据需要安装第三方库pip install xxx from random import random from bs4 import BeautifulSoup from fake_useragent import UserAgent from datetime import time from colorama import Fore from openpyxl import load_workbook from openpyxl.styles import Alignmentimport re import requests import json import os import pandas as pd import openpyxl观察最左列车型列表 – 步骤1 输入品牌名称得到该品牌下的所有车系。 def get_band_response(brand_id0):num 1 # 用于统计请求次数while True:headers {user-agent: UserAgent().random # 随机获取ua}url https://car.autohome.com.cn/AsLeftMenu/As_LeftListNew.ashxparams {typeId: 1 ,brandId: brand_id,fctId: 0 ,seriesId: 0}response requests.get(url, headersheaders, paramsparams)if response.status_code 200:return responseelse:if num 5:print(请求超过5次退出程序)breakelse:print(请求失败正在重新请求...)num 1time.sleep(1)def main():while True:band input(请输入汽车品牌).strip()response get_band_response()band_pattern fa href([^]*?)i[^]*?/i{band}emband_info re.search(band_pattern, response.text)if not band_info:print(该品牌不存在请重新输入)continueelse:band_href band_info.group(1)band_id re.findall(r/price/brand-(\d).html, band_href)[0]print(F{band} 品牌id为, band_id)resp_brand get_band_response(brand_idband_id)# 上面得到了品牌页面的响应数据后即可往下解析出该品牌下的各个车系的名称的id值parse_series(band, responseresp_brand)breakif __name__ __main__:main()– 步骤2 解析各个车系的名称和id值用于构建请求车系配置的url .(句点)匹配除了换行之外的所有一个字符 .*(点-星)匹配除了换行外的所有字符 “”.join(list)是Python中的一个常用方法用于将列表中的所有字符串元素连接起来元素之间不添加任何分隔符 BeautifulSoup 是一个用于解析HTML和XML文档的Python库。它创建了一个解析树每个节点代表文档中的一个元素、文本或指令。这使得程序可以轻松地访问和操作文档的各个部分。 CSS选择器来查找HTML文档中的元素.current dl dd a 这个选择器的意思是选择所有在带有类名 current 的元素内部的 dl 元素的直接子元素 dd 内的 a 标签。 enumerate 是 Python 的一个内置函数它用于将一个可迭代对象如列表、元组或字符串组合为一个索引序列同时列出数据和数据下标。 def parse_series(band, response):html re.findall(rdocument.writeln\((.*)\), response.text)html .join(html)soup BeautifulSoup(html, html.parser)data_list soup.select(.current dl dd a)still_sell [i for i in data_list if 停售 not in i.get_text(stripTrue)]stop_sell [i for i in data_list if 停售 in i.get_text(stripTrue)]print(f该品牌共找到{len(data_list)}个车型其中在售车型共{len(still_sell)}个已停售车型共{len(stop_sell)}个车型停售系列车型无配置信息。)print(----------------------------------------------\n在售车型列表如下\n----------------------------------------------)series_dict {}for still_index, still_data in enumerate(still_sell, start1):series_name still_data.contents[0].text.strip()href still_data.get(href)series_id re.findall(r/price/series-(\d).html, href)[0]series_dict[series_id] series_nameprint(f序号{still_index}\t车型{series_name}\t车型id{series_id})......– 步骤3 找到配置页根据车系id值构建配置url def get_response(series_id0):num 1 # 用于统计请求次数while True:headers {user-agent: UserAgent().random # 随机获取ua}url https://car-web-api.autohome.com.cn/car/param/getParamConfparams {mode: 1,site: 1,seriesid: series_id}response requests.get(url, headersheaders, paramsparams)if response.status_code 200:return responseelse:if num 5:print(请求超过5次退出程序)breakelse:print(请求失败正在重新请求...)num 1time.sleep(1) def parse_series(band, response):......while True:choice input(Fore.RED \n请输入需要下载的车型id输入0则下载该品牌全部车型配置).strip()if choice in series_dict.keys():# 以下为获取配置的逻辑函数# 构建配置页urlseries_name series_dict[choice]series_url https://car.autohome.com.cn/config/series/{}.html.format(choice)print(Fore.CYAN f---正在下载{band}-{series_name}车型id为{choice}配置链接为{series_url})# 获取当前车系的响应数据即配置此时的配置信息是不完整的其中的部分数据是隐藏的需要解密response get_response(choice)if 抱歉 in response.text and 暂无相关数据 in response.text:print(Fore.RED 该系列车暂无配置信息)# 字典格式的配置信息resp_dictjson.loads(response.text)# 获取多列配置数据all_info get_car_config(resp_dict)df pd.DataFrame(all_info)# 根据要求提取出车系的上市年份构建文件名excel_name f{band}_{series_name}.xlsx# 保存到excel文件中save_to_excel(all_info, folderband, filenameexcel_name)breakelse:print(输入的车型id不存在请重新输入。)continueinput(请按任意键关闭程序...) – 步骤4 将JSON数据格式调整为列表方面后面转换为dataframe颜色不重要懒得处理了先 # 清洗数据 def get_car_config(config_dic):# 获取配置项列表allconfig []# 初始化itemname列表configname_list []# 遍历titlelist数组for title in config_dic[result][titlelist]:# 遍历items数组for item in title[items]:# 提取itemname并添加到列表中configname_list.append(item[itemname])allconfig.append(configname_list)#获取配置数据for data in config_dic[result][datalist]:configvalue_list []# 注意多个数据调整格式颜色数据另外处理for valueitem in data[paramconflist]:value_list []if valueitem.get(itemname) ! :configvalue_list.append(valueitem[itemname])elif not valueitem.get(sublist):configvalue_list.append(-)else:stri[]for multivalue in valueitem[sublist]:stri.append(multivalue[value] multivalue[name])#连成一个文本串不要列表形式防止多余[]stro\n.join(stri)configvalue_list.append(stro)allconfig.append(configvalue_list)# 颜色之后处理一下再return allconfig – 步骤5 保存数据修改格式。 def save_to_excel(data, folder, filename):if not os.path.exists(folder):os.mkdir(folder)df pd.DataFrame(data)# df.T是将表格的行和列进行倒置的操作excel_path f{folder}/{filename}df.T.to_excel(excel_path, indexFalse, headerFalse)# 使用openpyxl打开Excel文件修改单元格对齐方式以启用换行workbook load_workbook(excel_path)sheet workbook.active# 遍历所有单元格启用换行和垂直居中for row in sheet.iter_rows():for cell in row:cell.alignment Alignment(wrap_textTrue, verticalcenter)# 设置列宽num_columns df.shape[0]for col in range(1, num_columns 1):sheet.column_dimensions[chr(64 col)].width 20# 保存对工作簿的更改workbook.save(excel_path)print(Fore.GREEN 配置下载完成保存到文件------ , f{folder}/{filename})【总结】 也算是好的开始虽然懂的还是不多但是依葫芦画瓢还是画出来了其他的东西之后再优化之后应该还要打包成软件给同事用再研究研究发一篇。 ——以上内容仅供学习请勿用于违法行为如有涉及侵权等问题请及时与我联系。
http://www.hkea.cn/news/14537695/

相关文章:

  • 赤坎手机网站建设公司自己可以开发一个软件吗
  • 网站的建设目标文档vs2010 网站开发源码
  • 成都微信网站建设wordpress 4.3.18漏洞
  • 学佛网站开发项目需求分析网站问题有哪些内容
  • 网站页尾模板wordpress主题安装失败进不了后台
  • 网站推广方式百度云网站设计规划书
  • 无锡市新吴区建设环保局网站移动互联网的应用论文
  • 网站平台在线提交功能互联网定制网站
  • 关于网站建设实验报告阿克苏地区住房和城乡建设局网站
  • 做网站需要服务器和什么软件中国招标投标公共信息服务平台
  • 如何为网站添加谷歌分析工具商城类网站建设步骤
  • 买完服务器怎么做网站wordpress去除评论表单
  • 兰州网站建设q.479185700棒沈阳专业做网站方案
  • jsp网站开发四酷全书怎样申请免费网站空间
  • 网站制作比较好的公司济宁网站运营策略
  • 个人适合做什么网站增城微信网站建设
  • 建设银行查余额网站传奇手游网页版
  • php商城网站开发报告私人私密浏览器免费下载
  • 保定中小企业网站制作wordpress进入文字版
  • apache 本地网站大连网站如何制作
  • 灰色网站模板游戏介绍网站模板
  • 手机网站个人中心源码广州网站订制开发
  • 博览局网站建设深圳大浪有做网站的吗
  • 无障碍环境建设 网站做包装找灵感看什么网站
  • 做阿里网站的分录手机端网站建设教程
  • 导购网站开发要多少钱淮安网站建设工作室
  • 广州 门户seo优秀网站
  • 茶叶网站源码深圳品牌馆设计公司
  • 做一手楼房的网站营销型网站建设营销型网站建设
  • 网站优化提升速度网站建设:中企动力