今天看到一个网站:
太神奇了,对于每个数字都用css背景图片裁切得到一张小图进行显示。可以确定的是每个数字的图片大小是8*17。
今天我们就一起玩玩。
开始测试
先尝试用request读取数据,结果获得一大堆极度混淆的JS的代码。然后尝试用selenium访问,结果:
感觉这个防火墙有点叼。算了,使用大杀器来隐藏模拟浏览器的特征:
<span style="background-color:#f8f8f8"><span style="color:#333333">from selenium.webdriver import ChromeOptions
from selenium import webdriver
browser = webdriver.Chrome()
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option('useAutomationExtension', False)
option.add_argument(
'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')
option.add_argument("--disable-blink-features=AutomationControlled")
browser = webdriver.Chrome(options=option)
with open('stealth.min.js') as f:
js = f.read()
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': js
})
url = 'http://hotels.huazhu.com/inthotel/detail/9005308'
browser.get(url)
</span></span>
这回页面总算是出来了:
然而价格有时并不显示,只能多刷新几下页面:
多次访问之后,数据总算能看到了。
下面让模拟器模拟点击查看全部价格:
<span style="background-color:#f8f8f8"><span style="color:#333333">from selenium.webdriver.common.by i