具体的数据如下
查看页面源代码发现,一个好玩的事情,源代码中使用了大量的CSS3的语法
下图,我标注的部分就是关键的一些数据了,大概在600行之后。
反爬措施展示
源文件数据
刹车/安全系统
页面显示数据
一些关键数据被处理过了。
爬取关键信息
我们要把源代码中的关键信息先获取到,即使他数据是存在反爬的。获取数据是非常简单的。通过request模块即可
def get_html():
url = "https://car.autohome.com.cn/config/series/59.html#pvareaid=3454437"
headers = {
"User-agent": "你的浏览器UA"
}
with requests.get(url=url, headers=headers, timeout=3) as res:
html = res.content.decode("utf-8")
return html
找关键因素
在html页面中找到关键点:
-
var config
-
var levelId
-
var keyLink
-
var bag
-
var color
-
var innerColor
-
var option
这些内容你找到之后,你下手就用重点了,他们是什么?数据啊,通过简单的正则表达式就可以获取到了
def get_detail(html):
config = re.search("var config = (.*?)};", html, re.S)
option = re.search("var option = (.*?)};", html, re.S)
print(config,option)
输出结果
>python e:/python/demo.py
>python e:/python/demo.py
处理汽车参数
通过正则表达式的search方法,匹配数据,然后调用group(0) 即可得到相关的数据
def get_detail(html):
config = re.search("var config = (.*?)};", html, re.S)
option = re.search("var option = (.*?)};", html, re.S)
# 处理汽车参数
car_info = ""
if config and option :
car_info = car_info + config.group(0) + option.group(0)
print(car_info)
拿到数据之后,没有完,这是混淆之后的数据,需要解析回去,继续关注网页源代码,发现一段奇怪的JS。这段JS先不用管,留点印象即可~
关键字破解
注意到
hs_kw数字_configfH是一个span的class
我选中span之后的::before
对应的css为
发现实测两个字出现了,对应的class请记住
.hs_kw28_configfH::before
全局搜索一下
双击找到来源
确定数据就在html源码当中。
格式化html源码,在内部搜索hs_kw,找到关键函数
function $GetClassName$($index$) {
return '.hs_kw' + $index$ + '_baikeCt';
}
这段JS的来源就是我们刚才保留的那个JS代码段,复制所有的JS源码,到source里面新建一个snippet,然后我们运行一下。
在里面代码最后添加一个断点,ctrl+enter运行
运行到断点,在右侧就能看到一些参数出现
-
$ruleDict$:
-
$rulePosList$
接下来,我们进行替换操作,这部流程需要用到selenium进行替换
核心代码如下,主要的注释,我写在了代码内部,希望能帮助你看懂