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

电商网站的建设与运营企业咨询服务公司经营范围

电商网站的建设与运营,企业咨询服务公司经营范围,如何制作网页跳转链接,网络设计总结写在前面 工作中遇到#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言#xff0c;真正的职责只有一个#xff1a;找到自我。然后在心中坚守其一生#xff0c;全心全意#xff0c;永不停息。所有其它的路都是不完整的#xff0c;是人的逃避方式#xff0c;是对大…写在前面 工作中遇到简单整理理解不足小伙伴帮忙指正 对每个人而言真正的职责只有一个找到自我。然后在心中坚守其一生全心全意永不停息。所有其它的路都是不完整的是人的逃避方式是对大众理想的懦弱回归是随波逐流是对内心的恐惧 ——赫尔曼·黑塞《德米安》 在数据采集的过程中有部分页面会在接口调用到一定次数之后每次获取数据调用接口之后弹出一个验证码的校验作为一种反爬措施对于这种接口调用验证码一般情况下是只要请求就跳转有部分页面是随机的比如页面中有好多搜索框可能每个搜索框的change 事件都会发生一次接口调用这个时候使用 selenium 自动化提提取数据会导致处理的页面不是想要的的页面所以对于这种验证码的处理我们需要在页面任意位置提供一个检测跳转验证码验证页面的方法同时对验证码做校验处理。 下面为一个 Demo def cap(driver):Time : 2023/08/29 03:38:33Author : liruilongergmail.comVersion : 1.0Desc : 验证码处理Args:driverReturns:voidimport ddddocrocr ddddocr.DdddOcr()time.sleep(3)while len(driver.find_elements(By.XPATH,//h1[contains(text(),输入验证码刷新) ] )) 0:element driver.find_element(By.XPATH, //img[ idvcodeimg ])# 清空验证码数据driver.execute_script(arguments[0].value , element)#定位元素并获取截图文件: element.screenshot(element.png)with open(element.png, rb) as f:image_bytes f.read()#image_bytes BytesIO(base64.b64decode(screenshot))text ocr.classification(image_bytes)if len(text) 4:text text[1:5]driver.find_element(By.XPATH, //input[idvcode]).send_keys(text)time.sleep(3)driver.find_element(By.XPATH, //input[classisOK]).click()time.sleep(3)# 验证失败重新验证if len(driver.find_elements(By.XPATH,//h1[contains(text(),输入验证码刷新) ] )) 0:driver.get(https://icp.chinaz.com/captcha) 在实际的编写中需要注意的地方 获取验证码图片的方式是通过对元素截图还是对照片路径请求下载获取需要注意有些验证码图片,在通过 requests 库下载图片时每次调用都是不同的图片所以只能使用截图的方式验证码识别的方式可以考虑使用 ocr或者深度学习模型或者一些商业接口上面使用的 pip install ddddocr对于识别不准的情况可以考虑做一些后期的约束处理比如上面的验证码4位数字但是在第一位会出现一个干扰字符ocr 偶尔会识别为字符需要做切割处理。进行识别的时机以及识别后的处理对于如何开始识别可以通过关键字来进行判断放到入口处对于识别后验证失败的处理也需要考虑上面的页面在识别验证成功会进行跳转错了不发生跳转对于错误的情况可以使用死循环的重新请求获取新的验证码直到识别验证成功。 下面为一个数据采集的实际脚本中的使用。 #!/usr/bin/env python # -*- encoding: utf-8 -*-File : icp_reptile.py Time : 2023/08/23 23:07:46 Author : Li Ruilong Version : 1.0 Contact : liruilongergmail.com Desc : 验证码版本 # here put the import libfrom selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time import re import pandas as pd import csv import sys import os import json import requests import ddddocr from io import BytesIO import base64 import pytesseract from PIL import Imagea_name [河北] ocr ddddocr.DdddOcr() 自动登陆,需要提前保存登陆cookie 信息driver webdriver.Chrome() with open(C:\\Users\山河已无恙\\Documents\GitHub\\reptile_demo\\demo\\cookie_vip.json, r, encodingu8) as f:cookies json.load(f)driver.get(https://icp.chinaz.com/provinces) for cookie in cookies:driver.add_cookie(cookie)driver.get(https://icp.chinaz.com/provinces)wait WebDriverWait(driver, 30)## 查询条件准备 查询条件准备 #wait.until(EC.presence_of_element_located((By.XPATH, //span[ titlechinaz_7052291 ])))def cap(driver):Time : 2023/08/29 03:38:33Author : liruilongergmail.comVersion : 1.0Desc : 验证码处理Args:Returns:voidtime.sleep(3)while len(driver.find_elements(By.XPATH,//h1[contains(text(),输入验证码刷新) ] )) 0:element driver.find_element(By.XPATH, //img[ idvcodeimg ])# 清空验证码数据driver.execute_script(arguments[0].value , element)#定位元素并获取截图文件: element.screenshot(element.png)with open(element.png, rb) as f:image_bytes f.read()#image_bytes BytesIO(base64.b64decode(screenshot))text ocr.classification(image_bytes)if len(text) 4:text text[1:5]driver.find_element(By.XPATH, //input[idvcode]).send_keys(text)time.sleep(3)driver.find_element(By.XPATH, //input[classisOK]).click()time.sleep(3)if len(driver.find_elements(By.XPATH,//h1[contains(text(),输入验证码刷新) ] )) 0:driver.get(https://icp.chinaz.com/captcha)time.sleep(5) # 触发验证码处理 all_butt_cap driver.find_element(By.XPATH,//h1[contains(text(),输入验证码刷新) ] )# 处理验证码的情况cap(driver)time.sleep(5)### 查询条件准备# 备案时间 all_butt driver.find_element(By.XPATH,//div/a[contains(href,all) and classpr10 ] ) driver.execute_script(arguments[0].click();, all_butt) cap(driver) # 单位性质 all_butt driver.find_element(By.XPATH,//div[contains(text(),全部) and classMainCateW-cont SearChoese] ) driver.execute_script(arguments[0].click();, all_butt) time.sleep(3) cap(driver) # 企业 all_butt driver.find_element(By.XPATH,//a[contains(text(),企业) and val企业 ] ) driver.execute_script(arguments[0].click();, all_butt) time.sleep(2)cap(driver) # 状态 all_butt driver.find_element(By.XPATH,//div[contains(text(),全部) and idwebStatus_txt and classMainCateW-cont SearChoese w90] )driver.execute_script(arguments[0].click();, all_butt) time.sleep(2) # 已开通 all_butt driver.find_element(By.XPATH,//a[contains(text(),已开通) and val1 ] )driver.execute_script(arguments[0].click();, all_butt) time.sleep(2) cap(driver)# 地区 all_butt driver.find_element(By.XPATH,//strong[contains(text(),地区) and classCateTit ] ) next_element all_butt.find_element(By.XPATH,following-sibling::*[1]) driver.execute_script(arguments[0].click();, next_element) time.sleep(2)def area(p_name,driver,p_data):Time : 2023/08/24 04:24:50Author : liruilongergmail.comVersion : 1.0Desc : 备案数据获取Args:Returns:voidall_butt driver.find_element(By.XPATH,//a[contains(text(),p_name) ] )driver.execute_script(arguments[0].click();, all_butt)#all_butt.click()time.sleep(2)# 页数太对分盟市处理,后面的数据没办法直接处理all_butt driver.find_element(By.XPATH,//div[contains(text(),全部) and idaddrctxt ] )time.sleep(2)driver.execute_script(arguments[0].click();, all_butt)all_ui driver.find_element(By.XPATH,//ul[ idaddrclst] )citys all_ui.find_elements(By.TAG_NAME,a)for city in citys:try:c_n city.textexcept:print(页面异常)continueif c_n 全部:continueprint(处理市,c_n)time.sleep(2)driver.execute_script(arguments[0].click();, city)time.sleep(5)# 验证码处理cap(driver)time.sleep(5)# 查询cap(driver)# 选择全部all_butt driver.find_element(By.XPATH,//div/a[contains(href,all) and valall ] )driver.execute_script(arguments[0].click();, all_butt)time.sleep(5)cap(driver)#all_butt driver.find_element(By.XPATH,//input[ typebutton and idbtn_search and value点击搜索] )#driver.execute_script(arguments[0].click();, all_butt)#time.sleep(4)#cap(driver)time.sleep(10)def all_break(driver):if len(driver.find_elements(By.XPATH,//span[contains(text(),页到第) and classcol-gray02] )) 0:all_butt driver.find_element(By.XPATH,//div/a[contains(href,all) and valall ] )driver.execute_script(arguments[0].click();, all_butt)time.sleep(5)cap(driver)time.sleep(10)#all_break(driver)# 总页数获取page_butt driver.find_element(By.XPATH,//span[contains(text(),页到第) and classcol-gray02] )page_c int(re.search(r\d, page_butt.text).group())# 盟市页数太多分时间段处理 # 当前页数据处理tbody driver.find_element(By.XPATH,//tbody[ classresult_table and idresult_table ])rows tbody.find_elements(By.TAG_NAME,tr)for row in rows:# 获取当前行中的所有单元格cells row.find_elements(By.TAG_NAME, td)# 打印单元格数据data {}data[域名]cells[0].textdata[主办单位名称]cells[1].textdata[网站首页网址]cells[5].textp_data.append(data)# 其他页数据处理 if page_c 101:page_c 101 for page_i in range(1,page_c):try:print(f{c_n} :处理页数,page_i)nextPage driver.find_element(By.XPATH,//a[ title下一页 and idnextPage ])driver.execute_script(arguments[0].click();, nextPage)time.sleep(3)cap(driver)all_break(driver)cap(driver)#nextPage.click()time.sleep(6)tbody driver.find_element(By.XPATH,//tbody[ classresult_table and idresult_table ])rows tbody.find_elements(By.TAG_NAME,tr)print(tbody.text)for row in rows:# 获取当前行中的所有单元格cells row.find_elements(By.TAG_NAME, td)# 打印单元格数据data {}data[域名]cells[0].textdata[主办单位名称]cells[1].textdata[网站首页网址]cells[5].textp_data.append(data)time.sleep(6)except:print(f第 { page_i} 页发生了异常跳过了)pass finally: fieldnames [域名, 主办单位名称, 网站首页网址]with open(省份_a_ICP.csv, w, newline,encodingutf-8) as file:writer csv.DictWriter(file, fieldnamesfieldnames)writer.writeheader() # 写入列名writer.writerows(p_data) # 写入字典数据print(数据已保存为CSV文件, CDN_M_省份_a_ICP.csv) return p_data if __name__ __main__:for a in a_name:p_data []try:p_data area(a,driver,p_data)except:continuepassfinally:fieldnames [域名, 主办单位名称, 网站首页网址]with open(省份_a_ICP.csv, w, newline,encodingutf-8) as file:writer csv.DictWriter(file, fieldnamesfieldnames)writer.writeheader() # 写入列名writer.writerows(p_data) # 写入字典数据print(数据已保存为CSV文件, CDN_M_省份_a_ICP.csv) time.sleep(55555) 博文部分内容参考 © 文中涉及参考链接内容版权归原作者所有如有侵权请告知 © 2018-2023 liruilongergmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)
http://www.dnsts.com.cn/news/137094.html

相关文章:

  • 学校网站建设情况网站收录量是什么意思
  • 营销型网站sempk清新织梦淘宝客模板淘客网站程序源码
  • h5企业网站源码下载福田公司旗下子公司
  • 网页设计与网站建设作业在线logo制作免费
  • 沧州网站wordpress删除小工具
  • 做物流网站的公司吗全国设计网站公司
  • 南京 网站设计营销管理系统
  • 外贸企业公司网站建设wordpress人机验证
  • 政务信息网站建设方案水利工程建设监理网站
  • 医院 网站建设 新闻网站怎样上线
  • 潍坊网站制作保定公司html怎么做音乐网站
  • 佛山网站建设优化网站备案证书如何打开
  • 网站规划建设书做网站常用的技术有哪些
  • 绵阳门户网站建设龙岗网站建设企业
  • 游戏网站开发计划书品牌网站制作报价表
  • 织梦网站源码下载彭山住房和城乡建设局网站
  • 怎么做视频网站的seo设置网址
  • 自己怎么做商城网站jquery插件 wordpress
  • 网站开发建设好处动态做网站
  • 批量网站建设天津南洋建设集团网站
  • 婚纱摄影网站开题报告沁阳建网站
  • 天津企业设计网站建设aso应用商店优化原因
  • 男女在床上做暖暖插孔网站制作简单的网页代码
  • 黄石本土做网站的公司wordpress插件转tp5
  • 厦门做网站维护的公司网站开发公司业务
  • 建设银行德阳分行网站找大学生做网站要多少钱
  • 空气炸锅做糕点的网站做IP授权的一般看什么网站
  • 海口手机网站建设高端网站建设要到磐石网络
  • 建设规划展览馆网站的优势烟台优化网站排名
  • 公司网站建设西安凡科网站设计