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

上海建设牌电动三轮官方网站办公空间设计主题名称

上海建设牌电动三轮官方网站,办公空间设计主题名称,宣传片拍摄事件,东台网站建设目录 一、安装 DrissionPage 模块与准备1. 安装模块2. 设置要打开浏览器的路径 二、获取并解析数据1. 打开指定网站的页面2. 监听网络数据 三、保存数据四、示例五、其他示例1. 定位信息所在的 div 标签2. css 语法定位 点击翻页 学习视频#xff1a;【Python爬虫可视化… 目录 一、安装 DrissionPage 模块与准备1. 安装模块2. 设置要打开浏览器的路径 二、获取并解析数据1. 打开指定网站的页面2. 监听网络数据 三、保存数据四、示例五、其他示例1. 定位信息所在的 div 标签2. css 语法定位 点击翻页 学习视频【Python爬虫可视化采集分析各大招聘网站信息数据BOSS直聘、前程无忧、智联招聘、猎聘网】 一、安装 DrissionPage 模块与准备 DrissionPage 模块官网地址【DrissionPage官网】 1. 安装模块 Win R 输入 cmd 打开命令提示符。 输入 pip install DrissionPage 利用 pip 安装模块。 如果想要升级成最新稳定版则输入命令 pip install DrissionPage --upgrade 。 参考文档【安装 | DrissionPage官网】 drissionpage 模块与 requests 模块的区别在于 requests 模块通过模拟浏览器对 utl 地址发送请求从而获取数据 而 drissionpage 模块则直接打开浏览器以访问网站。 2. 设置要打开浏览器的路径 在 .py 文件里输入以下代码填入电脑中 Chrome 或其他浏览器的可执行文件路径然后执行执行一遍即可。 from DrissionPage import ChromiumOptions# 把浏览器路径记录到配置文件今后启动浏览器皆使用该路径 # 电脑内 Chrome 可执行文件路径 path rC:\Program Files\Google\Chrome\Application\chrome.exe ChromiumOptions().set_browser_path(path).save()运行成功后会出现以下结果。 配置已保存到文件: D:\anaconda3\envs\python312\Lib\site-packages\DrissionPage\_configs\configs.ini 以后程序可自动从文件加载配置参考文档【准备工作 | DrissionPage官网】 二、获取并解析数据 明确需求明确采集的网站和数据内容。 抓包分析通过浏览器的开发者工具分析对应的数据位置。 打开开发者工具右键点击 “检查” 或 F12 再选择 “网络”Ctrl R 刷新网页通过关键字搜索找到对应的数据位置。 可以通过 “元素” 面板即数据标签 css 或 xpath 语法定位可以通过 “网络” 面板在执行动作之前监听数据包的特征获取相应的响应数据。 1. 打开指定网站的页面 # 导入自动化模块 from DrissionPage import ChromiumPage# 打开浏览器实例化浏览器对象 google ChromiumPage() # 访问指定网站的页面 google.get(rhttps://www.zhipin.com/web/geek/jobs?query%E7%88%AC%E8%99%ABcity101260100)运行上述代码会弹出网站页面右键选择 “检查” 。 选择 “网络” Ctrl R 进行刷新。 2. 监听网络数据 通过搜索指定目标特征并通过 “预览” 查看获取到的信息展开 zpData 下的 jobList 查看详细信息。 可以通过 listen.start() 函数启动监听器启动同时可设置获取的目标特征那么该如何设置点击 “标头” 复制下图红框中的内容并进行过滤验证。 如果过滤出只有一条说明刚刚复制的网址是一个唯一特征将该网址粘贴进 listen.start() 函数里。 如果过滤出多条可以通过设置 listen.wait() 的 count 字段监听多条例如data_load google.listen.wait(count2) 然后从返回值中选择需要获取响应数据的那一条进行操作例如data_response data_load[-1].response.body 。 # 导入自动化模块 from DrissionPage import ChromiumPage # 导入格式化输出模块 from pprint import pprint# 打开浏览器实例化浏览器对象 google ChromiumPage() # 监听数据包 google.listen.start(rwapi/zpgeek/search/joblist.json) # 访问指定网站的页面 google.get(rhttps://www.zhipin.com/web/geek/jobs?query%E7%88%AC%E8%99%ABcity101260100) # 获取数据包加载 data_load google.listen.wait() # 获取响应数据字典 data_response data_load.response.body print(data_response) print(- * 50) # 键值对取值提取信息为列表 data_list data_response[zpData][jobList] # for 循环遍历提取列表里的元素 for index in data_list:# print(index)# ----------------pprint(index)print(- * 50)部分结果展示 提取出需要的内容以方便查看。 # 导入自动化模块 from DrissionPage import ChromiumPage# 打开浏览器实例化浏览器对象 google ChromiumPage() # 监听数据包 google.listen.start(rwapi/zpgeek/search/joblist.json) # 访问指定网站的页面 google.get(rhttps://www.zhipin.com/web/geek/jobs?query%E7%88%AC%E8%99%ABcity101260100) # 获取数据包加载 data_load google.listen.wait() # 获取响应数据字典 data_response data_load.response.body # 键值对取值提取信息为列表 data_list data_response[zpData][jobList] # for 循环遍历提取列表里的元素 for index in data_list:# 提取具体数据信息保存字典中temporarily_dict {公司区域: index[areaDistrict],招聘领域: index[brandIndustry],公司名称: index[brandName],公司规模: index[brandScaleName],学历要求: index[jobDegree],工作经验: index[jobExperience],职位名称: index[jobName],薪资范围: index[salaryDesc],所需技能: .join(index[skills]),公司福利: .join(index[welfareList])}for key, value in temporarily_dict.items():print(f{key} : {value})print(- * 50)部分结果展示 参考文档 【监听网络数据 | DrissionPage官网】 【Python 基础 (标准库)pprint (数据美化输出)】 三、保存数据 用 CSV 文件保存字典数据 # 导入自动化模块 from DrissionPage import ChromiumPage import csv# 打开浏览器实例化浏览器对象 google ChromiumPage() # 监听数据包 google.listen.start(rwapi/zpgeek/search/joblist.json) # 访问指定网站的页面 google.get(rhttps://www.zhipin.com/web/geek/jobs?query%E7%88%AC%E8%99%ABcity101260100) # 获取数据包加载 data_load google.listen.wait() # 获取响应数据字典 data_response data_load.response.body # 键值对取值提取信息为列表 data_list data_response[zpData][jobList]# 创建文件对象 # 如果只使用 utf-8 编码则用 Excel 打开 CSV 文件会出现乱码 f open(recruitment_information.csv, modew, encodingutf-8-sig, newline) # 字典写入方法 cd csv.DictWriter(f, fieldnames[公司区域,招聘领域,公司名称,公司规模,学历要求,工作经验,职位名称,薪资范围,所需技能,公司福利 ]) cd.writeheader()# for 循环遍历提取列表里的元素 for index in data_list:# 提取具体数据信息保存字典中temporarily_dict {公司区域: index[areaDistrict],招聘领域: index[brandIndustry],公司名称: index[brandName],公司规模: index[brandScaleName],学历要求: index[jobDegree],工作经验: index[jobExperience],职位名称: index[jobName],薪资范围: index[salaryDesc],所需技能: .join(index[skills]),公司福利: .join(index[welfareList])}cd.writerow(temporarily_dict)用 Excel 文件保存字典数据 # 导入自动化模块 from DrissionPage import ChromiumPage import pandas as pd# 打开浏览器实例化浏览器对象 google ChromiumPage() # 监听数据包 google.listen.start(rwapi/zpgeek/search/joblist.json) # 访问指定网站的页面 google.get(rhttps://www.zhipin.com/web/geek/jobs?query%E7%88%AC%E8%99%ABcity101260100) # 获取数据包加载 data_load google.listen.wait() # 获取响应数据字典 data_response data_load.response.body # 键值对取值提取信息为列表 data_list data_response[zpData][jobList] # 创建一个空列表 job_info [] # for 循环遍历提取列表里的元素 for index in data_list:# 提取具体数据信息保存字典中temporarily_dict {公司区域: index[areaDistrict],招聘领域: index[brandIndustry],公司名称: index[brandName],公司规模: index[brandScaleName],学历要求: index[jobDegree],工作经验: index[jobExperience],职位名称: index[jobName],薪资范围: index[salaryDesc],所需技能: .join(index[skills]),公司福利: .join(index[welfareList])}job_info.append(temporarily_dict)# 转换数据 df pd.DataFrame(job_info) # 导出保存为 Excel 表格 df.to_excel(recruitment_information.xlsx, indexFalse)注如果不想在第一次运行时弹出浏览器可设置无头模式【无头模式 | DrissionPage官网】 四、示例 要求用 DrissionPage 模块爬虫某网站通过 “网络” 面板在执行动作之前监听数据包的特征获取相应的响应数据需要实现翻页和保存至 CSV 文件。 # 导入自动化模块 from DrissionPage import ChromiumPage # # 导入格式化输出模块 # from pprint import pprint # import csv# def deal_with_data(data_r, cd_p, cd_i, cd_o): def deal_with_data(data_r):# 键值对取值提取信息为列表data_list data_r[data]# for 循环遍历提取列表里的元素for index in data_list:# pprint(index)# print(- * 50)# 分解 recommendTagsrecommend_info [d[text] for d in index[recommendTags] if text in d]# 提取具体数据信息保存字典中if index[dataTypeTag] 预测:temporarily_pre_dict {单位: index[dataId],类型: index[dataTypeTag],地区: recommend_info[1],根据: recommend_info[0],预测: .join([d[text] for d in index[title] if text in d])}# cd_p.writerow(temporarily_pre_dict)for key, value in temporarily_pre_dict.items():print(f{key} : {value})print(- * 50)else:if len(recommend_info) 0:area 未知money 未知elif len(recommend_info) 1:area recommend_info[0]money 未知else:area recommend_info[0]money recommend_info[1]if index[dataTypeTag] 采购意向:temporarily_intent_dict {标题: .join([d[text] for d in index[title] if text in d]),类型: index[dataTypeTag],地区: area,金额: money,匹配类型: index[keywordMatchType],发布时间: index[timeTags][0]}# cd_i.writerow(temporarily_intent_dict)for key, value in temporarily_intent_dict.items():print(f{key} : {value})print(- * 50)else:# 分解 thisProjectContactif len(index[thisProjectContact]) 0:project_contact 暂无else:project_contact .join(index[thisProjectContact])temporarily_dict {标题: .join([d[text] for d in index[title] if text in d]),类型: index[dataTypeTag],地区: area,金额: money,匹配类型: index[keywordMatchType],项目联系人: project_contact,发布时间: index[timeTags][0]}# cd_o.writerow(temporarily_dict)for key, value in temporarily_dict.items():print(f{key} : {value})print(- * 50)# def create_csv_head(f, head_name): # # 字典写入方法 # cd csv.DictWriter(f, fieldnameshead_name) # cd.writeheader() # return cddef main():# # 创建文件对象——预测招标# f_predict open(forecast_bidding.csv, modea, encodingutf-8-sig, newline)# head_name_predict [单位, 类型, 地区, 根据, 预测]# cd_predict create_csv_head(f_predict, head_name_predict)# # 创建文件对象——采购意向# f_intent open(intent_bidding.csv, modea, encodingutf-8-sig, newline)# head_name_intent [标题, 类型, 地区, 金额, 匹配类型, 发布时间]# cd_intent create_csv_head(f_intent, head_name_intent)# # 创建文件对象——其他招标# f_other open(other_bidding.csv, modea, encodingutf-8-sig, newline)# head_name_other [标题, 类型, 地区, 金额, 匹配类型, 项目联系人, 发布时间]# cd_other create_csv_head(f_other, head_name_other)# 打开浏览器实例化浏览器对象google ChromiumPage()# 监听数据包google.listen.start(rapi/search/bidInfoSearchV232)# 访问指定网站的页面google.get(rhttps://bidradar.com.cn/pc/homeSearch?searchTypeprojectkeyword%E7%8E%AF%E5%A2%83%E7%9B%91%E6%B5%8B)num 4# 构建循环加载下一页for page in range(1, num):print(f正在采集第 {page} 页的内容……)# 加载新获取数据包data_load google.listen.wait()# 获取响应数据字典data_response data_load.response.body# 处理数据deal_with_data(data_response)# deal_with_data(data_response, cd_predict, cd_intent, cd_other)# 下滑页面到底部google.scroll.to_bottom()if page ! num - 1:# 定位 “加载更多” 并点击button google(点击加载更多)button.run_js(this.click();)# f_predict.close()# f_intent.close()# f_other.close()if __name__ __main__:main()部分结果展示 参考【DrissionPage中处理无位置元素点击问题的解决方案】 五、其他示例 1. 定位信息所在的 div 标签 点击 “元素” 再点击左上角的那个按钮然后选择需要定位的信息其对应的 div 标签会高亮。 2. css 语法定位 点击翻页 参考文档【页面或元素内查找 | DrissionPage官网】 通过 “元素” 面板即数据标签 css 语法定位。 # 导入自动化模块 from DrissionPage import ChromiumPage # 导入序列化模块 import json # from pprint import pprint # 导入csv模块 # import csv# 打开浏览器实例化浏览器对象 google ChromiumPage() # 访问指定网站的页面 google.get(rhttps://we.51job.com/pc/search?jobArea260200keyword%E7%88%AC%E8%99%ABsearchType2keywordType)# # 创建文件对象 # f open(51job.csv, modew, encodingutf-8-sig, newline) # # 字典写入方式 # cd csv.DictWriter(f, fieldnames[职位名称, 薪资范围, 薪资制度, 所在城市, 所在区域, # 所需经验, 所需学历, 发布时间, 公司名称, 公司领域, # 公司性质, 公司规模, 公司详情页]) # cd.writeheader()# 构建循环翻页 for page in range(1, 5):print(f正在采集第{page}页的数据内容……)# 提取所有职位信息所在的 div 标签divs google.eles(css:.joblist-item)# print(divs)# for 循环遍历提取列表里的元素for div in divs:# 提取具体职位信息返回一个json字符串info div.ele(css:.joblist-item-job).attr(sensorsdata)# 将json字符串转换为json字典json_data json.loads(info)# pprint(json_data)# print(- * 50)# 提取公司名称并去除两端的空格c_name div.ele(css:.cname).text.strip()# 公司详情页c_link div.ele(css:.cname).attr(href)# 提取公司信息c_info [i.text for i in div.eles(css:.dc)]# 判断是否有公司规模数据if len(c_info) 3:c_num c_info[-1]else:c_num 未知# 分割城市数据country_list json_data[jobArea].split(·)city country_list[0]if len(country_list) 2:area country_list[1]else:area 未知# 分割薪资制度salary_list json_data[jobSalary].split(·)salary salary_list[0]if len(salary_list) 2:salary_system salary_list[1]else:salary_system 未知# 通过键值对取值提取相关信息保存到字典中info_dict {职位名称: json_data[jobTitle],薪资范围: salary,薪资制度: salary_system,所在城市: city,所在区域: area,所需经验: json_data[jobYear],所需学历: json_data[jobDegree],发布时间: json_data[jobTime],公司名称: c_name,公司领域: c_info[0],公司性质: c_info[1],公司规模: c_num,公司详情页: c_link}# cd.writerow(info_dict)for k, v in info_dict.items():print(f{k} : {v})print(- * 50)# 滑到页面底部google.scroll.to_bottom()# 定位下一页按钮并点击google.ele(css:.el-icon-arrow-right).click()部分结果展示
http://www.dnsts.com.cn/news/11715.html

相关文章:

  • 视频网站开发视频vs2015 网站开发
  • 门户网站开发哪家好小程序商城怎么推广引流
  • 企业网站建设的原则wordpress 悬浮栏
  • 梧州网站设计理念成都网站开发培训
  • 清远市专业网站制作chinacd wordpress
  • 有没有做的很炫的科技型网站互联网保险与传统保险的区别
  • 聊天软件怎么做seo诊断分析工具
  • 网站的站点的管理系统朔州海外网络推广
  • 衡阳建设网站有什么免费推广项目的好软件
  • 做网站是先买域名还是国内三大电商平台分析报告
  • 女的可以学做网站wordpress idc模板
  • 南沙网站制作云卡会员卡管理系统
  • 服务器在国外的网站内网网站建设的亮点特点
  • 成都网站建设哪里好点深圳网络推广解决方案
  • 个人网站做哪些内容购物类网站
  • 长沙网站制造培训收费网站建设
  • 网站程序开发公司徐州泉山建设局网站
  • 建立网站费用多少网站建设方案硬件支撑
  • 个人网站名商洛市住户和城乡建设局网站信息价
  • 最好的手机资源网站数码设计网站
  • 网站开发软件 连接SQL数据库企业网站整理优化
  • 如何wix 做 网站搜索引擎营销推广方案
  • 浙江海滨建设集团有限公司网站网站模板系统
  • wordpress做网站手机手机网站建设公司
  • 企业网站的视频页如何做东莞ui设计公司
  • 互联网工具型网站车载互联系统网站建设
  • 高端企业网站制作返回json数据的网站
  • 电商网站建设如何上海中高风险地区名单最新
  • 网站开发毕业设计说明孝感网站建设
  • 一个ip做几个网站网站建设中图片怎么样