如何用Python爬取数据源URL动态变化的网址?
无意间发现一个网站 七麦数据
咦~这数据好像还蛮有意思的,尝试爬取一波。
这也太简单了吧,不就是 XHR 加载的嘛,数据都给我装好了 https://api.qimai.cn/rank/indexPlus/brand_id/2?analysis=dDB4Fi8wUEF1J2VAfndkQy8II0YHIn8WUT1xCVAEVlp5Rx4TAwpcGlENVFFLY11MEkoHRwQLVTxZARxUchVSBgpdBlFUUQEMDiMTBQ%3D%3D&brand=all&country=cn&device=iphone&genre=36&date=2018-05-05&page=1
有个参数 analysis,这么大一串,怕是有问题,多请求几次,,果然,这个参数在变化,而且前面的链接也失效了 Q_Q..
好吧,定位到这个文件夹 static.qimai.cn/static/js/app.5aed8c28e91d77a9f578.js ,,无奈 js 是个渣渣。。
想问下这种网页的话,除了 selenium 和分析 js,还有没有什么方法?分析 js 的话,有没有什么小技巧?
跪等大神分享
如何用Python爬取数据源URL动态变化的网址?
还是上 selenium 吧
这种情况得用Selenium或者Playwright这种能执行JavaScript的库。很多网站的数据是通过JS动态加载的,URL会变,直接用requests拿不到完整数据。
给你个Selenium的例子:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
# 设置Chrome选项
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 无头模式,不显示浏览器窗口
# 初始化驱动
driver = webdriver.Chrome(options=options)
try:
# 访问目标网页
driver.get('https://example.com/dynamic-page')
# 等待动态内容加载(这里等某个特定元素出现)
wait = WebDriverWait(driver, 10)
target_element = wait.until(
EC.presence_of_element_located((By.CLASS_NAME, 'data-container'))
)
# 获取动态加载后的页面源码
page_source = driver.page_source
# 这里可以用BeautifulSoup解析page_source
# soup = BeautifulSoup(page_source, 'html.parser')
# 或者直接通过Selenium定位元素提取数据
data_elements = driver.find_elements(By.CLASS_NAME, 'data-item')
for element in data_elements:
print(element.text)
# 如果需要点击按钮加载更多数据
load_more_button = driver.find_element(By.ID, 'load-more')
load_more_button.click()
time.sleep(2) # 等待新数据加载
finally:
driver.quit()
关键点:
- 用
WebDriverWait配合expected_conditions等动态内容加载完成 - 通过
page_source获取完整的渲染后HTML - 可以直接用Selenium的方法定位元素,或者用BeautifulSoup解析源码
如果网站反爬厉害,可能需要加user-agent、处理cookie,或者用undetected-chromedriver。
用Playwright也行,API更现代,支持异步。看具体需求选工具。
总结:用Selenium或Playwright处理JS动态加载。
emmm…
之前做煎蛋的反加密,是把 js 下载下来,然后调用关键解密函数,手工分析加密太麻烦,而且指不定什么时候又改了
分析不了就 selenium 之类的吧
好吧,tks
可以请教一下你的前端同事,这种分析对他们来说应该不难
你还别说 这网页挺复杂的 有时间分析下
无非是 js 中有个函数生成了一个加了时间戳的密钥,然后过几分钟失效,把 js 格式化一下找找,应该不难定位函数。
问一下 我连 analysis 参数都搜不到了,请问下怎么搜到这个参数名呢
全局搜索,ctrl+shift+f
好久没碰了,不知道页面改版没,,感兴趣你可以试下
全局搜不到, 是不是采用什么编码方式加密了, 望指点, 试了 16 位编码 ,没找到
已经搞定
好像页面改版了,应该是换关键字了,,,
怎么弄的?
你好,请问解决了吗,能否指点一下

