从ASP网站抓取JavaScript下载链接
Scrape JavaScript download links from ASP website
我正在尝试从本网站下载所有文件以进行备份和镜像,但是我不知道如何正确解析JavaScript链接。
我需要在命名文件夹中以相同的方式组织所有下载。例如,在第一个文件夹中,我将有一个名为"DAP-1150"的文件夹,其中将是一个名为"DAP-1150 A1 FW v1.10"的文件夹,其中包含文件"DAP1150A1_FW110b04_FOSS.zip",依此类推每个文件。我尝试在Python中使用beautifulsoup,但它似乎无法正确处理ASP链接。
当你在Javascript链接上遇到困难时,你可以试试Selenium: http://selenium-python.readthedocs.org/en/latest/getting-started.html
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.python.org")
time.sleep(3) # Give your Selenium some time to load the page
link_elements = driver.find_elements_by_tag_name('a')
links = [link.get_attribute('href') for link in links]
您可以使用链接并将其传递给urllib2
以相应地下载它们。如果你需要的不仅仅是一个脚本,我可以向你推荐Scrapy和Selenium的组合:硒与刮擦动态页面
这是它正在做的事情。我刚刚使用了 Firefox 中的标准网络检查器来快照 POST 操作。请记住,就像我指出你的另一个答案一样,这不是一个写得特别好的网站 - JS/POST 根本不应该被使用。
首先,这是 JS - 它非常简单:
function oMd(pModel_,sModel_){
obj=document.form1;
obj.ModelCategory_.value=pModel_;
obj.ModelSno_.value=sModel_;
obj.Model_Sno.value='';
obj.ModelVer.value='';
obj.action='downloads2008detail.asp';
obj.submit();
}
这将写入以下字段:
<input type=hidden name=ModelCategory_ value=''>
<input type=hidden name=ModelSno_ value=''>
所以,你只需要一个 POST 表单,针对这个 URL:
http://tsd.dlink.com.tw/downloads2008detail.asp
这是FF网络分析仪的一组数据示例。您只需要更改两个项目 - 从 JS 链接中抓取 - 您可以使用普通的抓取来获取它们:
- 回车=确定
- 型号类别=0
- 型号Sno=0
- ModelCategory_=行动方案
- ModelSno_=1150
- Model_Sno=
- 模型Ver=
- sel_PageNo=1
- 操作系统=GPL
您可能会通过实验发现并非所有这些都是必需的。我确实尝试在浏览器中为此使用 GET,但看起来目标页面坚持使用 POST。
不要忘记在点击和提交之间在刮板内留出相当长的时间,因为每次点击都代表远程服务器上的点击;我建议5秒,模拟人类延迟。如果你这样做得太快 - 如果你的连接良好,这很可能 - 远程端可能会认为你在DoSing他们,并可能阻止你的IP。记住刮擦的座右铭:做一个好的机器人!
- 将下载链接从web浏览器传递给第三方应用程序
- 使用angular创建JSON下载链接
- jquery对话框可见时自动下载链接问题
- aFrame.io创建超链接和下载链接
- 将屏幕截图显示为pdf下载链接
- 为什么YouTube-dl下载链接来自YouTube在meteorjs应用程序中
- 从ASP网站抓取JavaScript下载链接
- 您如何处理需要使用 Angular 的授权令牌的下载链接
- 在 Spring-MVC 中创建下载链接
- 一键下载链接并在浏览器操作中添加书签
- 设置下载文件的名称,即使下载链接重定向到另一个
- 根据移动/桌面操作系统在网站上显示不同的按钮/下载链接
- 如何在动态生成的下载链接中解析csv文件
- 单击多个 HRREF 下载链接
- 我如何使一个下载链接与两个东西下载
- Html和javascript:如何将下载链接切换到按钮
- 如何为IPFS托管的文件创建下载链接
- 单击图像下载链接
- 在javascript中的两个下载链接之间创建一条折线
- 在不下载文件的情况下检查下载链接是否正常工作