可以做网站的路由器,建设一个和聚享游差不多的网站,网络推广培训教程,杭州大江东建设局网站1. 写在前面 某查查网站反爬虫风控还是较强的#xff0c;之后会分别介绍一下PC端协议、APP端自动化、APP端接口协议三种采集方案。这里主要介绍APP端的自动化方式#xff0c;APP端自动化方式需要登陆账号#xff0c;协议的话需要签名授权#xff08;自动化经测试没有太多限…1. 写在前面 某查查网站反爬虫风控还是较强的之后会分别介绍一下PC端协议、APP端自动化、APP端接口协议三种采集方案。这里主要介绍APP端的自动化方式APP端自动化方式需要登陆账号协议的话需要签名授权自动化经测试没有太多限制、走协议接口的话账号与次数有捆绑 接口出来结构化数据、自动化就得手搓解析 APP接口效果图 几种方式都测试过自动化的方案优势就是比较稳定对IP及账号的资源依赖相对不太高缺点就是慢懂得都懂不过这个弊端是可以弥补的做成自动化集群不管是模拟器还是真机均可拉升效率提高产能
APP自动化效果图
用自动化的话前期的琐事比较多而且自动化要想完全稳定的投入长期持续的生产过程当中也是比较艰辛的适配各种可能出现的状况
自动化分析页面元素是首要工作可以在Appium中进行元素分析查看但是并不支持个人感觉体验感较差呈现的信息不够完整
这里推荐大家使用Android SDK下面自带的tools工具 看起来都比较丝滑一些 首先我们需要打开Appium的客户服务以下URL是服务地址。通过它与移动设备进行通信和控制另外需要进行自动化测试的Android设备的信息配置
url http://127.0.0.1:4723/wd/hub
deviceList [{platformName: Android #操作系统类型,platformVersion: 9 #Android版本号,# deviceName: 1304dccd,udid: 172.16.18.167:5555, #这里用IP的方式可以不接USB直接通过网络连接设备进行测试appPackage: com.android.icredit, #应用程序的包名appActivity: .ui.SplashActivity, #应用程序的入口newCommandTimeout: 1800,noReset: True, #Appium不重置应用程序状态unicodeKeyboard: True,resetKeyboard: True}
]
for device in self.deviceList:driver Remote(command_executorself.url,desired_capabilitiesdevice)自动化的程序还是比较简单的解析的话用id取值就可以
# 数据解析规则
def parameter(self, **kwargs):return kwargsdef parse_rule(self):rule self.parameter(companyNamecom.android.icredit:id/ai8,unifyTheSocialCreditCodecom.android.icredit:id/aid,legalRepresentativecom.android.icredit:id/h6,Registrationstatuscom.android.icredit:id/ajb,registerDatecom.android.icredit:id/aje,registeredCapitalcom.android.icredit:id/ajh,contributedCapitalcom.android.icredit:id/ajk,organizingInstitutionBarCodecom.android.icredit:id/aig,businessRegistrationNumbercom.android.icredit:id/aij,taxpayersRegistrationNumbercom.android.icredit:id/aim,companyTypecom.android.icredit:id/ait,businessTermcom.android.icredit:id/aiu,taxpayerQualificationcom.android.icredit:id/ais,staffSizecom.android.icredit:id/ajo,contributorsIncom.android.icredit:id/ajn,dateApprovedcom.android.icredit:id/aix,registrationAuthoritycom.android.icredit:id/aiy,importAndExportEnterpriseCodecom.android.icredit:id/aip,Nationalstandardindustrycom.android.icredit:id/ajr)return ruledef parse_rule_slither(self):rule self.parameter(affiliatingAreacom.android.icredit:id/aiz,englishNamecom.android.icredit:id/aj3,sitecom.android.icredit:id/ya,businessScopecom.android.icredit:id/ajv,Phonecom.android.icredit:id/ajz)return rule然后就是搜索的部分这里涉及点击下拉的一些操作。有更多提升优化的操作空间
search_element com.android.icredit:id/azdself._random_sleep(driver, search_element)driver.find_element(By.ID, search_element).click()# 清理搜索记录跟历史浏览记录if self.search_count 15:for element_id in [com.android.icredit:id/at8,com.android.icredit:id/awm,com.android.icredit:id/a7c,com.android.icredit:id/awf,com.android.icredit:id/awj,com.android.icredit:id/a7c,]:driver.find_element(By.ID, element_id).click()time.sleep(1)self.search_count 0search_box driver.find_element(By.XPATH, //*[resource-idcom.android.icredit:id/lt])search_box.send_keys(keyword)self.search_count 1driver.press_keycode(66)index 1while True:if index 3:driver.back()returnclick_company driver.find_element(By.XPATH, f//*[resource-idcom.android.icredit:id/vs][{index}])obj click_company.get_attribute(text)if obj keyword:breakindex 1click_company.click()while True:driver.swipe(423, 600, 446, 200, 200)checker_ele driver.find_elements(By.XPATH, //*[content-desc工商信息 or content-desc登记信息 or content-desc基本信息])if checker_ele:breaktime.sleep(1)if checker_ele[0].get_attribute(text) 登记信息:print(self.RED % 当前企业无符合数据, 跳过!)driver.find_element(By.ID, com.android.icredit:id/j3).click()returnchecker_ele[0].click()time.sleep(1)data {}for key, rule in self.parse_rule().items():checker driver.find_elements(By.ID, rule)data[key] checker[0].get_attribute(text) if checker else for _ in range(2):driver.swipe(423, 820, 446, 245, 200)for k, v in self.parse_rule_slither().items():if not data.get(k):checker driver.find_elements(By.ID, v)data[k] checker[0].get_attribute(text) if checker else for k in self.parse_rule_slither().keys():data.setdefault(k, )phone data.get(Phone, )if phone and phone.startswith(1) and len(phone) ! 11:data[Phone] phone * * (11 - len(phone))好了到这里又到了跟大家说再见的时候了。创作不易帮忙点个赞再走吧。你的支持是我创作的动力希望能带给大家更多优质的文章