Python Webscrape: 页面源中不存在的隐藏奇怪 url link
Python Webscrape: hidden strange url link that is not available in page source
我目前正致力于从门户中提取一些信息。我想要做的是将 url link 提取到外部 PDF 文件。我要抓取的网站是 https://232app.azurewebsites.net/Forms/ExclusionRequestItem/800。我试图抓取的信息是带有“查看附件文件”按钮的 BIS 决策备忘录部分 linked to an external PDF file
"View attachment file" button
问题来了:当我查看页面源代码时,我没有找到任何与 PDF 文件相关的 url link:
<div>
<h3>BIS Decision Memo</h3>
<div class="jumbotron">
<div class="row form-group">
<div class="col-sm-12" id="DMAttachment">
<span>Please wait...</span>
<a href="" data-id="800" data-type="DM">View attachment file</a><br />
</div>
</div>
</div>
</div>
</div>
<div class="row form-group">
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4 text-left">
但是,当单击“查看附件”按钮时,我能够下载 PDF 文件。我用PDF文件查看我的下载路径,我发现PDF文件的link地址如下:
因此,我很好奇这个奇怪的url是从哪里来的。我把这个奇怪的url拆分成几个部分,从页面源码中一个一个地搜索,却找不到任何线索。因此,我想请教一些关于如何获得这个 url.
的提示
此外,我正在尝试抓取更多 PDF url links 像上面的那样:https://232app.azurewebsites.net/Forms/ExclusionRequestItem/801
因此,我想问一下有没有什么办法可以抓取这些PDF文件links?我应该如何处理这个问题?我现在拥有的是使用请求包:
import requests
url = 'https://232app.azurewebsites.net/Forms/ExclusionRequestItem/800'
html_data = requests.get(url).text
然后我尝试切片文本以提取 PDF url。但是,由于我无法从上面找到 PDF urls,所以我不知道我能做什么。请给我一些提示。非常感谢您!
当您单击此按钮时,此页面使用 JavaScript。
在 Firefox
/Chrome
中使用 DevTools
(并在 HTML
中挖掘)我发现此按钮向你的
发送请求
https://232app.azurewebsites.net/Forms/ExclusionRequestItem/800?handler=DownloadDM&ID=800
它获取 JSON 数据 link 为 PDF。
所以我用它来仅使用 requests
来获取文件
import requests
import webbrowser
number = 800
# generate URL with `800` in two places
url = f'https://232app.azurewebsites.net/Forms/ExclusionRequestItem/{number}?handler=DownloadDM&ID={number}'
# send requests to get JSON data with `data["downloadURL"]`
r = requests.get(url)
data = r.json()
print('url:', data["downloadURL"])
# create unique filename for PDF
filename = f'output-{number}.pdf'
# get PDF and save in file (usign bytes mode)
r = requests.get(data["downloadURL"])
with open(filename, 'wb') as fh:
fh.write(r.content)
# open PDF in default program
webbrowser.open(filename)
使用不同的号码可以获得不同的文件。
我目前正致力于从门户中提取一些信息。我想要做的是将 url link 提取到外部 PDF 文件。我要抓取的网站是 https://232app.azurewebsites.net/Forms/ExclusionRequestItem/800。我试图抓取的信息是带有“查看附件文件”按钮的 BIS 决策备忘录部分 linked to an external PDF file
"View attachment file" button
问题来了:当我查看页面源代码时,我没有找到任何与 PDF 文件相关的 url link:
<div>
<h3>BIS Decision Memo</h3>
<div class="jumbotron">
<div class="row form-group">
<div class="col-sm-12" id="DMAttachment">
<span>Please wait...</span>
<a href="" data-id="800" data-type="DM">View attachment file</a><br />
</div>
</div>
</div>
</div>
</div>
<div class="row form-group">
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4 text-left">
但是,当单击“查看附件”按钮时,我能够下载 PDF 文件。我用PDF文件查看我的下载路径,我发现PDF文件的link地址如下:
因此,我很好奇这个奇怪的url是从哪里来的。我把这个奇怪的url拆分成几个部分,从页面源码中一个一个地搜索,却找不到任何线索。因此,我想请教一些关于如何获得这个 url.
的提示此外,我正在尝试抓取更多 PDF url links 像上面的那样:https://232app.azurewebsites.net/Forms/ExclusionRequestItem/801 因此,我想问一下有没有什么办法可以抓取这些PDF文件links?我应该如何处理这个问题?我现在拥有的是使用请求包:
import requests
url = 'https://232app.azurewebsites.net/Forms/ExclusionRequestItem/800'
html_data = requests.get(url).text
然后我尝试切片文本以提取 PDF url。但是,由于我无法从上面找到 PDF urls,所以我不知道我能做什么。请给我一些提示。非常感谢您!
当您单击此按钮时,此页面使用 JavaScript。
在 Firefox
/Chrome
中使用 DevTools
(并在 HTML
中挖掘)我发现此按钮向你的
https://232app.azurewebsites.net/Forms/ExclusionRequestItem/800?handler=DownloadDM&ID=800
它获取 JSON 数据 link 为 PDF。
所以我用它来仅使用 requests
import requests
import webbrowser
number = 800
# generate URL with `800` in two places
url = f'https://232app.azurewebsites.net/Forms/ExclusionRequestItem/{number}?handler=DownloadDM&ID={number}'
# send requests to get JSON data with `data["downloadURL"]`
r = requests.get(url)
data = r.json()
print('url:', data["downloadURL"])
# create unique filename for PDF
filename = f'output-{number}.pdf'
# get PDF and save in file (usign bytes mode)
r = requests.get(data["downloadURL"])
with open(filename, 'wb') as fh:
fh.write(r.content)
# open PDF in default program
webbrowser.open(filename)
使用不同的号码可以获得不同的文件。