Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于JavaScript生成URL的Python Web爬虫_Javascript_Python_Web Scraping - Fatal编程技术网

用于JavaScript生成URL的Python Web爬虫

用于JavaScript生成URL的Python Web爬虫,javascript,python,web-scraping,Javascript,Python,Web Scraping,我正在尝试使用一些Python网络爬虫从一个网站下载大约3000个PDF。但是,这些PDF的URL是由JavaScript函数生成的。所以,我想知道有没有关于如何实现这一点的教程 例如,链接到阿尔伯托欧洲发胶(气溶胶)的URL—所有变体都将在单击onclick=“javascript:”doPostBack(';ctl00$placeBody$gridView$gridView';';DocumentCenter.aspx?did={0}$0'&&#code>后生成。 所

我正在尝试使用一些Python网络爬虫从一个网站下载大约3000个PDF。但是,这些PDF的URL是由JavaScript函数生成的。所以,我想知道有没有关于如何实现这一点的教程

例如,链接到阿尔伯托欧洲发胶(气溶胶)的URL—所有变体都将在单击
onclick=“javascript:”doPostBack(';ctl00$placeBody$gridView$gridView';';DocumentCenter.aspx?did={0}$0'&&#code>后生成。
所以问题是如何让网络爬虫获得计算出的URL

function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
<tbody>
    <tr>
        <td>
            <input type="image" src="App_Graphics/PDFDocument.gif" alt="MSDS" onclick="javascript:__doPostBack(&#39;ctl00$placeBody$gridView$gridView&#39;,&#39;DocumentCenter.aspx?did={0}$0&#39;);return false;" />
        </td>
        <td><a href="javascript:__doPostBack(&#39;ctl00$placeBody$gridView$gridView&#39;,&#39;MSDSDetail.aspx?did={0}$0&#39;)">Alberto European Hairspray (Aerosol) - All Variants</a>
        </td>
        <td>Unilever PLC</td>
        <td>8131-01</td>
    </tr>
    <tr class="row-alternate">
        <td>
            <input type="image" src="App_Graphics/PDFDocument.gif" alt="MSDS" onclick="javascript:__doPostBack(&#39;ctl00$placeBody$gridView$gridView&#39;,&#39;DocumentCenter.aspx?did={0}$1&#39;);return false;" />
        </td>
        <td><a href="javascript:__doPostBack(&#39;ctl00$placeBody$gridView$gridView&#39;,&#39;MSDSDetail.aspx?did={0}$1&#39;)">Alberto European Mousse (Aerosol) - All Variants</a>
        </td>
        <td>Unilever PLC</td>
        <td>8132-01</td>
    </tr>
</tbody>
函数\uuu doPostBack(事件目标,事件参数){
if(!theForm.onsubmit | |(theForm.onsubmit()!=false)){
格式为.\uuu EVENTTARGET.value=EVENTTARGET;
格式为.\uuu EVENTARGUMENT.value=EVENTARGUMENT;
submit()格式;
}
}
联合利华
8131-01
联合利华
8132-01

您不能。请使用JavaScript解释器(例如)执行代码,然后继续进行HTML解析。使用Qt的WebKit也是一种很好的方法,但速度可能较慢。

另一种选择是,您可以使用Selenium来获取计算的URL。

@tao.hong不客气。我也有同样的问题,我知道这有点令人失望:p