Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.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
带嵌入式PDF查看器的Python抓取ASP站点_Python_Html_Asp.net_Pdf - Fatal编程技术网

带嵌入式PDF查看器的Python抓取ASP站点

带嵌入式PDF查看器的Python抓取ASP站点,python,html,asp.net,pdf,Python,Html,Asp.net,Pdf,第一篇文章在这里,任何帮助将不胜感激:)。 我正试图从一个带有嵌入式pdf查看器的网站上抓取数据。据我所知,没有办法直接下载PDF文件 浏览器将pdf显示为多个PNG图像文件,问题是PNG文件也无法直接访问。它们从原始pdf渲染,然后显示 去掉标题的URL在代码块中 代码中包含pdf查看器的原始URL(我使用的是第二个URL)和呈现pdf的链接 我的策略是使用urllib获取viewstate和eventvalidation,然后使用wget从站点下载所有文件。此方法在没有post数据的情况下有

第一篇文章在这里,任何帮助将不胜感激:)。 我正试图从一个带有嵌入式pdf查看器的网站上抓取数据。据我所知,没有办法直接下载PDF文件

浏览器将pdf显示为多个PNG图像文件,问题是PNG文件也无法直接访问。它们从原始pdf渲染,然后显示

去掉标题的URL在代码块中

代码中包含pdf查看器的原始URL(我使用的是第二个URL)和呈现pdf的链接

我的策略是使用urllib获取viewstate和eventvalidation,然后使用wget从站点下载所有文件。此方法在没有post数据的情况下有效(第1页)。我从fiddler(嗅探工具)获取其余参数

但是,当我使用post数据指定页面时,在尝试下载图像文件时,会出现405个类似的错误。但是,它下载实际的html页面没有问题,只是没有附带任何png文件。下面是wget错误的一个示例

HTTP请求已发送,正在等待响应。。。405方法不允许 2014-03-27 17:09:38错误405:方法不允许

因为我不能直接访问图像文件链接,我想用wget抓取整个页面是我最好的选择。如果有人知道更好的选择,请告诉我:)。post数据似乎至少部分有效,因为下载的html文件被设置为我在参数中指定的页面

根据fiddler的说法,站点会自动对图像文件执行get请求。然而,我不太确定如何模仿这一点

感谢您的帮助,谢谢您的时间

imglink = 'http://201.150.36.178/consultaexpedientes/render/2132495e-863c-4b96-8135-ea7357ff41511.png'
origurl = 'http://201.150.36.178/consultaexpedientes/sistemas/boletines/wfBoletinVisor.aspx?tomo=1&numero=9760&fecha=14/03/2014%2012:40:00'

url = 'http://201.150.36.178/consultaexpedientes/usercontrol/Default.aspx?name=e%3a%5cBoletinesPdf%5c2014%5c3%5cBol_9760.pdf%7c0'
f = urllib2.urlopen(url)
html = f.read()

soup = BeautifulSoup(html)
eventargs = soup.findAll(attrs={'type':'hidden'})
reValue = re.compile(r'value=\"(.*)\"', re.DOTALL)
viewstate = re.findall(reValue, str(eventargs[0]))[0]
validation = re.findall(reValue, str(eventargs[1]))[0]

params = urllib.urlencode({'__VIEWSTATE':viewstate,
                           '__EVENTVALIDATION':validation,
                           'PDFViewer1$PageNumberTextBox':6,
                           'PDFViewer1_BookmarkPanelScrollX':0,
                           'PDFViewer1_BookmarkPanelScrollY':0,
                           'PDFViewer1_ImagePanelScrollX' : 0,
                           'PDFViewer1_ImagePanelScrollY' : 0,
                           'PDFViewer1$HiddenPageNumber':6,
                           'PDFViewer1$HiddenAplicaMarcaAgua':0,
                           'PDFViewer1$HiddenBrowserWidth':1920,
                           'PDFViewer1$HiddenBrowserHeight':670,
                           'PDFViewer1$HiddenPageNav':''})


command = '/usr/bin/wget -E -H -k -K -p --post-data=\"%s'  % params + '\" ' + url
print command
os.system(command)