水平有限,仅供参考。



如图所示,汽车之家的车辆详情里的数据做了反爬对策,数据被CSS伪类替换。



观察 Sources 发现数据就在当前页面。



发现若干条进行CSS替换的js



继续深入此JS



知道了数据与规则,剩下的交给PYTHON。


def repliceStr(browser,textJs,Js): _config_pos=textJs.find("return '.")
JsSplit=textJs[_config_pos:_config_pos+70] ClassHead=re.search("[A-Za-z]{2}_[A-Za-z]{2}",JsSplit,re.S).group(0)
ClassFoot=re.search("_[A-Za-z]+';",JsSplit,re.S).group(0)[:-2] pos=textJs.find("$InsertRule$($index$, $temp$);")
top=textJs[0:pos]
bottom=textJs[pos:] JsBack = browser.execute_script(''' var suc={}; '''+top+' suc[$index$]=$temp$; '+bottom+''' return suc ''') for cj in range(0,len(JsBack)): cjclass=ClassHead+str(cj)+ClassFoot
Js=re.sub("<span class='"+cjclass+"'></span>",JsBack[str(cj)], Js) return Js #获取详情页的数据
def getDetail(base_url): chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get(base_url) #在这里进行文件替换,反爬页面
#keyLink = re.search("var keyLink = (.*?)}];", browser.page_source, re.S)
config = re.search("var config = (.*?)};", browser.page_source, re.S)
option = re.search("var option = (.*?)};", browser.page_source, re.S) option=option.group(0)[13:-1]
config=config.group(0)[13:-1] script = re.findall("<script>(.*?)</script>", browser.page_source,re.S) for i in range(0,len(script)): if re.search("_config",script[i],re.S) : config=repliceStr(browser,script[i],config) if re.search("_option",script[i],re.S) : option=repliceStr(browser,script[i],option) option=demjson.decode(option);
config=demjson.decode(config); carr={}
for item in config['result']['paramtypeitems'] :
bigTitle=item['name']
carr[bigTitle]={}
index=0
for ni in item['paramitems']: cate =ni['name']
value=ni['valueitems'][0]['value']
carr[bigTitle][index]=[cate,value] index=index+1 for item in option['result']['configtypeitems'] :
bigTitle=item['name']
carr[bigTitle]={}
index=0
for ni in item['configitems']: cate =ni['name']
value=ni['valueitems'][0]['value']
carr[bigTitle][index]=[cate,value] index=index+1 time.sleep(10) return carr

刚接触PYTHON,还在学习中,找不到更好的解法。

python 爬虫 汽车之家车辆参数反爬的更多相关文章

  1. python爬虫的一个常见简单js反爬

    python爬虫的一个常见简单js反爬 我们在写爬虫是遇到最多的应该就是js反爬了,今天分享一个比较常见的js反爬,这个我已经在多个网站上见到过了. 我把js反爬分为参数由js加密生成和js生成coo ...

  2. Python爬虫入门教程 64-100 反爬教科书级别的网站-汽车之家,字体反爬之二

    说说这个网站 汽车之家,反爬神一般的存在,字体反爬的鼻祖网站,这个网站的开发团队,一定擅长前端吧,2019年4月19日开始写这篇博客,不保证这个代码可以存活到月底,希望后来爬虫coder,继续和汽车之 ...

  3. python爬虫——汽车之家数据

    相信很多买车的朋友,首先会在网上查资料,对比车型价格等,首选就是"汽车之家",于是,今天我就给大家扒一扒汽车之家的数据: 一.汽车价格: 首先获取的数据是各款汽车名称.价格范围以及 ...

  4. nodejs爬虫——汽车之家所有车型数据

    应用介绍 项目Github地址:https://github.com/iNuanfeng/node-spider/ nodejs爬虫,爬取汽车之家(http://www.autohome.com.cn ...

  5. python爬虫---CrawlSpider实现的全站数据的爬取,分布式,增量式,所有的反爬机制

    CrawlSpider实现的全站数据的爬取 新建一个工程 cd 工程 创建爬虫文件:scrapy genspider -t crawl spiderName www.xxx.com 连接提取器Link ...

  6. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  7. Python爬虫:用BeautifulSoup进行NBA数据爬取

    爬虫主要就是要过滤掉网页中没用的信息.抓取网页中实用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解.如网页的标签,网页的语言等知识,推荐去W3School: W3s ...

  8. Python爬虫入门教程 2-100 妹子图网站爬取

    妹子图网站爬取---前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情.希望可以做好. 为了写好爬虫,我们 ...

  9. python爬虫实战(六)--------新浪微博(爬取微博帐号所发内容,不爬取历史内容)

    相关代码已经修改调试成功----2017-4-13 详情代码请移步我的github:https://github.com/pujinxiao/sina_spider 一.说明 1.目标网址:新浪微博 ...

随机推荐

  1. 一些bug

    长期留坑 1.AC自动机多模式串匹配问题 对于要统计各个模式串在文本中的出现次数,对于每个当前节点不能直接暴力跳$fail$ 复杂可以退化到$O(n^2)$ $aaaaaa--aaa$可以卡掉 要将$ ...

  2. 【QT】子类化QObject+moveToThread实现多线程

    往期链接: <QThread源码浅析> <子类化QThread实现多线程> 从往期<QThread源码浅析>可知,在Qt4.4之前,run 是纯虚函数,必须子类化Q ...

  3. inno setup win10 创建菜单里面卸载图标

    1.win10自己注册表关联的卸载图标 会隐藏 卸载图标.现在的项目法是 不写注册表 直接 在目标文件里面创建快捷方式 移动到菜单里面 ; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 ...

  4. Linux系统中使用confluence构建企业wiki

    搭建confluence服务需要的步骤有:一,安装java环境即安装jdk8.二,安装需要使用的数据库(建议使用mysql5.6).三,破解的confluence6服务. 一,所需软件下载 1,下载j ...

  5. Python学习笔记2:基本数据类型

    Python中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象 ...

  6. 应对告警风暴,Cloud Alert 实现告警风暴智能降噪

    前言 睿象云前段时间发表了一篇< Zabbix 实现电话.邮件.微信告警通知的实践分享>的技术文章.它帮助我们非常轻松地支持了各种告警通知方式,但是存在一个严重的问题,我们经常接到各种相类 ...

  7. ubutun 服务器中文设置

    在连接到服务器时,我们看不到图形界面,按照常规的安装搜狗输入法行不通,查阅相关的资料找到一篇可以解决的 sudo apt-get update 如果出现 E: 无法下载 404 Not Found I ...

  8. cgroup实践-资源控制

    1.Cgroup安装 安装Cgroups需要libcap-devel和libcgroup两个相关的包 yum install gcc libcap-devel 2.Cgroup挂载配置 Cgroup对 ...

  9. MFC常用函数

    1.MFC的常用函数(只是找了些经常使用的,这里没有的可以CSDN查找,不需要都记住,经常使用自动就会记得) 1)GetDlgItemText(ID ,str)作用: 对话框中获取文本第一个参数为要获 ...

  10. 协程gevent模块和猴子补丁

    # pip 装模块 greenlet和gevent # 协程 # 与进程.线程一样也是实现并发的手段 # 创建一个线程.关闭一个线程都需要创建寄存器.栈等.需要消耗时间 # 协程本质上是一个线程 # ...