【问题标题】:Automatic wget download of pdf paper - given header text/html; charset=UTF-8pdf文件的自动wget下载-给定标题文本/ html;字符集=UTF-8
【发布时间】:2020-01-15 12:18:35
【问题描述】:

我正在寻找一种使用 python wget 从在线库下载 pdf 文件的方法。示例网址可能是https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8006280

请求收到的结果内容类型是'text/html;字符集=UTF-8'。使用下载功能会导致 stamp.jsp 文件包含一些 html 内容 - 有人有办法获取 pdf 吗?

谢谢大家

收到的html:

<script type="text/javascript" src="/assets/vendor/jquery/jquery.js?cv=20191217_000002" charset="utf-8"></script>

<!-- Fingerprint Cookie -->
<script type="text/javascript" src="/assets/vendor/js-cookie/src/js.cookie.js?cv=20191217_000002"></script>
<script type="text/javascript" src="/assets/vendor/fingerprintjs2/fingerprint2.js?cv=20191217_000002"></script>
<script type="text/javascript" src="/assets/js/lib/core/fingerprint.js?cv=20191217_000002"></script>
<script type="text/javascript">Xplore.Fingerprint.init();</script>

<!-- BEGIN: tealium in stamp/stamp.jsp. NOTE stamp.jsp does not use template.jsp, nor include common/assets.jsp, so including tealiumAnalytics.jsp here -->








		<!-- BEGIN: TealiumAnalytics.jsp -->
		
		
		
		
		
		
		
		
		
		
		
		
			
				
			
			
			
			
		
		
		
		
		
		

			<script type ="text/javascript">
 				// tealium config vars
				var TEALIUM_CONFIG_TAGGING_ENABLED = true;		
				var TEALIUM_CONFIG_CDN_URL = '//tags.tiqcdn.com/utag/';
				var TEALIUM_CONFIG_ACCOUNT_PROFILE_ENV = 'ieeexplore/main/prod';
				
				// tealium utag_data values for user 
				var TEALIUM_userType = 'Anonymous';
				var TEALIUM_userInstitutionId = '';
				var TEALIUM_userId = '';
				var TEALIUM_user_third_party = '';
				
				var TEALIUM_products = '';
			</script>


			<script type="text/javascript">
			// asynchronously load tealium's utag.js , which declares tealium JS variables like; utag_data, utag
			(function(a,b,c,d){
			
				a=TEALIUM_CONFIG_CDN_URL + TEALIUM_CONFIG_ACCOUNT_PROFILE_ENV + '/utag.js';
				b=document;c='script';d=b.createElement(c);d.src=a;
				d.type='text/java'+c;d.async=true;
				a=b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d,a);
			})();
			</script>

			<script type="text/javascript" src="/assets/js/analytics/tealiumTagsData.js?cv=20191217_000002"></script>
			<script type="text/javascript" src="/assets/js/analytics/tealiumAnalytics.js?cv=20191217_000002"></script>


		
 		
		<!-- END: TealiumAnalytics.jsp -->
			 

<!-- END: tealium in stamp/stamp.jsp -->
		



<html lang="en-US">
	<head>	
		<title>IEEE Xplore Full-Text PDF: </title>
		<style>
			html {
			    margin: 0;
			    padding: 0;
			    overflow: hidden;
			}
			body {
			    margin: 0;
			    padding: 0;
			}
			iframe {
				display: block;
				position: fixed;
				width: 100%;
				height: 100%;
			}
		</style>
	</head>
	<body>
		<iframe src="https://ieeexplore.ieee.org/ielx7/6979/8326752/08006280.pdf?tp=&arnumber=8006280&isnumber=8326752&ref=" frameborder=0></iframe>
	</body>
</html>

【问题讨论】:

  • 什么是 HTML 内容?它是 PDF 的包装,还是指向 PDF 的实际位置?您可以使用 BeautifulSoup 来解析实际的 PDF url
  • JammyDodger - 我不太喜欢 html,所以我在我的问题下添加了它

标签: python pdf request web-crawler wget


【解决方案1】:

恐怕您指向的网址不起作用。

通过查看网络消息(例如使用 Chrome 检查),我实际上看到了正确的 .pdf 链接:https://ieeexplore.ieee.org/ielx7/6979/8326752/08006280.pdf

>>> import wget
>>> url = "https://ieeexplore.ieee.org/ielx7/6979/8326752/08006280.pdf"
>>> response = wget.download(url=url, out="/path/to/your/directory")
100% [..........................................................................] 2817205 / 2817205>>>

【讨论】:

  • 谢谢! - 我从爬取 IEEE 结果中获得了链接。您知道如何访问您获得的“正确”链接吗?
  • 我会尝试在 IEEE 结果中查找包含 .pdf 的 URL。就我而言,我是通过在加载初始 URL 时分析网络流量找到的。如果你愿意,你可以分享 IEEE 结果的 URL,我可以看看。
  • 谢谢!我在我的工作流程中添加了另一个步骤(现在需要更多时间,但这是合理的)。从收到的 html 中提取正确的 .pdf 链接并使用 wget 进一步处理 - 谢谢!
猜你喜欢
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多