python爬虫用AI技术-破解企业工商数据抓取+网络爬虫+网站数据采集+数据抓取遇到的三大问题

我们在做数据网络爬虫、网站数据采集、网页数据抓取都会遇到的三个问题就是:验证码问题和封IP问题以及账号登录问题

python爬虫-selenium破解封IP+pytesseract破解验证码+AI破解网页加密

     一直在it大咖网从事python大数据挖掘、数据爬虫、AI技术开发工作,最近在深入研究人工智能“深度学习”TensorFlow技术,采用AI技术做数据爬虫和数据挖掘的工作,AI技术主要是建立爬虫的模型、深度训练机器人、样本数据验证模型、最后我们的机器人就可以像我们千军万马的真人在做爬虫的工作了,解决了爬虫界遇到的各种验证码、封IP、加密的问题。

  爬虫遇到的各种反爬难题:

我们知道人工智能的前面工作是喂养大量数据,那么这些数据怎么来呢?大数据的来源是需要用深度爬虫技术技术解决的,我从事过天某查的大数据爬虫系统深度研发、几个亿企业工商数据的采集和城市数据库建立、自己用python写过企某宝、企某查、淘宝、天猫、国家工商公示系统网站的数据爬虫等,每个网站的反爬技术都是不同的,像天某查,您如果需要采用python简单的request.get()技术是爬不到数据的,为什么呢?因为这个网站做了强大的反爬技术措施,您只要发起http模拟请求,立刻检测到您是爬虫,然后把您的IP封掉,或者直接服务器那边拒绝你访问。除了封IP外,第二个反爬技术提现在验证码,网站使用验证码的目的就是防止网站数据被爬虫程序机器爬去,因为普通的爬虫就技术是识别不出验证码的,需要用人的眼睛看才能识别出来验证码的数字,所以验证码一直是网站一道强大的守门神。比如当您爬天某查的时候,程序运行几分钟后就会自动弹出个验证码,如果您没有破解验证码那么爬虫工作也就停止了。更有趣的是有些网站采用矢量图加密,也就是传说中的字体库加密,很多爬虫高手对于这个问题缺少是束手无策。因为自己一直喜欢深度研究爬虫技术,希望的经验分享给大家,给大家一点启发.

当前网站的反爬技术有哪些:

1、天某查反爬技术分析:

图形验证码反爬:采用是图形验证码反爬技术,进行人机识别,实现反爬目的
(2)封IP发爬:服务器后台监控每个IP爬取数据的频率,如果发现同一个IP老是一直在采集就会封掉ip。

(3)VIP登录反爬:有些数据需要登录,如果不用VIP登陆是不能看到这些数据的,必须登录才能进行爬取数据。

 

矢量图加密:天某查的技术团队自己研发了一套字体库,用来混淆加密,让我们用浏览器打开看到的数据是正常的,但是用google或者firefox查看元素的时候看到的值是加密的值,现在这个技术对注册资本、公司经营范围、手机号码、邮箱字段等进行了字体库加密,所以我们眼睛看到的和元素源码看到的数据是不一致的,这个也是目前最高端的反爬技术。几乎没有人能够破解。(需要爬虫技术和大数据交流朋友加我qq:2779571288)
   分享基础版爬虫思路:

       像这种综合反爬技术的网站,我们要去批量采集数据,我们需要采取对的技术方式,比如如果我们需要爬取类似这种网站所有的企业工商数据,那么我们可以采用动态代理ip+cookie方式去采集,只有用python简单的 requests库和 BS4库即可,demo代码如下:

***************************动态代理IP爬虫完整方法*************************************************************************

Headers:是请求头,您需要模拟浏览器的请求头,请求头到底有哪些参数呢,您用google浏览器或者firefox火狐浏览器打开这个网站 然后查看元素,看网络请求里面有个 Request headers 这个就是请求头需要模拟发送的参数。如下图:

 cookies:是您打开那个网站后用firebox请求记录里可以看到的cookie值复制过得即可;

 Proxy: 是代理IP,您一定要用动态的爬虫代理IP去爬这种的网站,如果失败就循环下个代理IP直到成功为止。 代理IP可以去网上或者淘宝购买一些第三方的动态代理IP,但是需要高质量的、高匿名的、不限量的否则你几乎是爬不成功的,不要用几个IP尝试不成功觉得不行,需要循环大量IP,因为有些IP本身就暴露自己的身份了。

完整的爬虫代码:

import re

import requests

from bs4 import BeautifulSoup

 

def get_html(url, headers={}, cookies={}.proxy={}):

    while True:

        try:

            print("模拟请求:"+url);

            resp = requests.get(url, headers=headers, cookies=cookies, proxies=proxy, timeout=10)

            else:

                resp = requests.get(url, headers=mheaders, cookies=cookies, proxies=proxy, timeout=10)

            if 'tianyancha' in url:

                if resp.status_code == requests.codes.ok:

                    if '请输入验证码' not in resp.text:

                        return resp.text

                    else:

                        print('{}被封了!'.format(proxy))

                elif '融资历史' in resp.text:

                    return resp.text

                else:

                    print('返回代码编号1:{}, url:{}'.format(resp.status_code, url))

            else:

                if resp.status_code == requests.codes.ok:

                    if '小查为' in resp.text or '基本信息' in resp.text:

                        return resp.text

                else:

                    print('返回的代码编号2:{}, url:{}'.format(resp.status_code, url))

        except Exception as e:

            print('url :{},捕获code:{}'.format(url, e))

这种简单的爬取方法不用什么框架,直接python引进bs4库用BeautifulSoup解析html的数据、用requests库来发起网络get的请求即可,简单几行代码即可。

面临的问题:

         下面问题来了,我们采用的这种get+动态代理IP爬取这种加密的数据,而且需要登录才能看到的数据,面临的问题就是 手机号码是加密的 你爬不到手机号码,邮箱也是加密的,更厉害是注册资本也是用矢量字体库加密技术加密的,而且需要消耗大量的动态代理ip,高质量的动态ip成本是一个月几千到几万的费用,这样的爬虫技术是无法满足真正采集目的。

分享中端版解决思路:

     我们需要解决的是手机号码加密,可以爬取到会员登录看到的数据,那么我们采用的技术方案是:会员模拟登陆,而且还要绕过封IPD 的问题,那么在python爬虫技术中,我们只要采用chromedriver+selenium+chrome来实现自动模拟人工登录,模拟正常人一样的打开浏览器然后输入关键词然后去搜索然后得到数据结构,这样就是完全真实浏览器操作一样,目标网站是无法识别出来的。那么这里需要注意几点:就是chromedriver版本和chrome版本要对应,否则是是不成功的。

**************selenium+chromedriver+chrome 安装*****************************

 1 安装pyhton3

 2 下载 chromedriver.exe (v2.41版本) 放入 E:\python3.7\Scripts目录下

 3 安装 chrome 版本 69.0.3497.100(正式版本) (64 位)

chrome浏览器地址:https://dl.lancdn.com/landian/software/chrome/m/

chromedriver.exe 下载地址: http://npm.taobao.org/mirrors/chromedriver

***********selenium+chromedriver+chrome完整demo**************

# encoding=utf-8

# ----------------------------------------

# 语言:Python3.7

# 日期:2018-05-01

# 功能:破解图形验证码,

# ----------------------------------------

 

import time

import json

import os

import io

import sys

import re

import requests

from bs4 import BeautifulSoup

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.support.wait import WebDriverWait

 

options = webdriver.ChromeOptions()

browser = webdriver.Chrome(chrome_options=options)

global count

browser.set_window_size(1050, 900) #设置浏览器打开窗口大小

browser.get('https://www.tianxxxxcha.com/login’)#用get打开网址

html=Browser.page_source #用获取网页的html源码

Print(html) #打印出来看看结果是不是

#模拟登陆:

 #找到搜索框

 searchbox=browser.find_element(By.XPATH,'.//*[@class="input -sm js-live-search-auto"]')

 searchbtn=browser.find_element(By.XPATH,'.//*[@class="input-group-btn btn -sm btn-primary"]')

         searchbox.click();#鼠标点击一下搜索框 鼠标放入搜索框意思

         searchbox.clear()

         time.sleep(2) #停留2秒不要太快,否容易被检测到

         searchbox.send_keys(‘上海xxx有限公司’) #控制鼠标把需要采集的关键词输入到搜索框去

         time.sleep(2) #停留2秒不要太快,否容易被检测到

 

         searchbtn.click(); #模拟鼠标 点击“搜索”按钮

***********************************************************************

 下面是selenium操作浏览器鼠标键盘的各种方法:

WebElement接口获取值

size 获取元素的尺寸

text 获取元素的文本

get_attribute(name) 获取属性值

location 获取元素坐标,先找到要获取的元素,再调用该方法

page_source 返回页面源码

driver.title 返回页面标题

current_url 获取当前页面的URL

 

is_displayed() 设置该元素是否可见

is_enabled() 判断元素是否被使用

is_selected() 判断元素是否被选中

tag_name 返回元素的tagName

--------------------------------

**********************************************************************************

2、国家工商信息系统网反爬技术分析:

  (1)、二代极速拖拉验证码反爬技术:图形验证码是比较传统的验证码破解难度更大一点,因为需要模拟拖动的速度、拼接的吻合度等等。而且这个网站是采取不登录方式,每次查询都需要输入一次验证码,导致90%的爬虫工程师都无法越过这个极速验证码真正去爬取里面的数据,因为如果用普通的技术去越过这种验证码 需要高质量的、高匿名的、无限量的爬虫动态代理IP,成本太大,几乎没有几个公司可以愿意承担得起这个成本,想要破解这种极速验证码需要用另外的技术方式来处理。

 

 

因为时间有限,今天只能先分享交流到这里,最近在做AI爬虫模型,后面给大家分享如果用python这种极速验证码、图像验证码、字体库加密,如何用TensorFlow 进行深度学习来做机器人和训练机器人模型(需要爬虫技术和大数据交流朋友加我qq:2779571288)
--------------------- 
作者:liujainq 
来源:CSDN 
原文:https://blog.csdn.net/liujainq/article/details/83866794 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Python超市销售数据分析算法,基于Python语言编写,主要通过数据分析和数据挖掘的方法来分析超市销售数据,从而提供商家决策支持。 该算法主要包括以下几个方面的内容: 1. 数据采集:通过Python编写爬虫程序,自动化地从超市数据库中抓取销售数据。 2. 数据清洗:对采集到的数据进行清洗、去重、格式化处理,保证数据的准确性和一致性。 3. 数据分析:运用Python数据分析库,如Pandas、Numpy、Matplotlib等,对销售数据进行分析和建模,如统计分析、图表分析、时间序列分析、回归分析等等。 4. 数据挖掘:通过Python数据挖掘库,如Scikit-learn、TensorFlow等,对销售数据进行聚类分析、关联规则挖掘、预测建模等,从而深挖数据背后的规律和隐藏的信息。 5. 结果展示:通过Python可视化库,如Seaborn、Plotly等,将分析得到的结论可视化展示,从而便于商家进行决策。 Python超市销售数据分析算法可以帮助商家深入了解销售趋势、顾客行为、产品销售情况等信息,从而指导商家优化销售策略、改善服务质量、提升产品质量,提高销售收益和竞争力。 ### 回答2: Python是一种非常适合用于数据分析的编程语言。结合pandas、numpy、matplotlib、scipy等开源库,可以进行数据清理、数据可视化、统计分析、机器学习等多种分析任务。在超市销售数据分析中,可以使用Python进行以下分析: 1. 数据清洗和预处理:将原始数据进行清洗和预处理,去除重复、缺失、异常值等无效数据,进行格式转换和标准化,以便后续分析。 2. 数据可视化:使用matplotlib等库,对销售数据进行可视化分析,例如绘制折线图、柱状图、散点图、热力图等,以便发现销售趋势和规律。 3. 数据分析与建模:使用pandas等库,对销售数据进行统计分析,例如计算销售额、销售量、销售额占比、销售量占比、平均销售额、平均单价等指标,以便发现销售状况和评估销售策略。同时,也可以使用机器学习算法,例如聚类、分类、回归等,对销售数据进行建模和预测,以便制定更加精确的销售策略。 4. 数据挖掘和智能推荐:使用推荐算法,对销售数据进行挖掘和分析,以便结合顾客购买历史和商品特征,为顾客提供个性化的购物体验和促销策略。 综上所述,Python在超市销售数据分析中拥有广泛的应用和优势。同时,未来随着人工智能和大数据技术的发展,Python的应用场景将会越来越多样化和深入化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值