angularjs - 使用 Python 请求模块时解析 Angular.JS
问题描述
我正在制作一个 python 脚本来从一个使用 Angular JS 的站点收集图像 url。但是,requests.get 请求返回的网站没有解析 Angular.JS。例如...
>>>import requests
>>>url = "https://website.com"
>>request = requests.get(url)
>>>requests.text
<img ng-src="{{ getThumbnail(attachment).href }}" >
我已经尝试寻找使用 requests 模块的替代方法,但我找不到其他人专门谈论这个问题,所以我使用其他模块的大部分尝试都是在黑暗中完成的。我有什么替代方法来检索 Angular href?
解决方案
requests-html 的问题是您的 URL,它包含 # 或片段标识符
来自https://en.wikipedia.org/wiki/Fragment_identifier
当代理(例如网络浏览器)从网络服务器请求网络资源时,代理将 URI 发送到服务器,但不发送片段。相反,代理等待服务器发送资源,然后代理根据文档类型和分片值处理资源。
requests-html 看起来不像是在使用片段标识符。
我能想到的唯一选择是使用 Selenium。
sudo pip3 install selenium
然后获取驱动程序https://sites.google.com/a/chromium.org/chromedriver/downloads(根据您的操作系统,您可能需要指定驱动程序的位置)
from selenium import webdriver
url = "https://www.namus.gov/MissingPersons/Case#/51238/"
driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(10)
element = driver.find_element_by_class_name("section-list")
for child_element in element.find_elements_by_xpath(".//a"):
print(child_element.get_attribute('href'))
driver.quit()
输出:
https://www.namus.gov/api/CaseSets/NamUs/MissingPersons/Cases/51238/Images/83268/Original
https://www.namus.gov/api/CaseSets/NamUs/MissingPersons/Cases/51238/Images/83270/Original
https://www.namus.gov/api/CaseSets/NamUs/MissingPersons/Cases/51238/Images/83271/Original
https://www.namus.gov/api/CaseSets/NamUs/MissingPersons/Cases/51238/Images/83272/Original
https://www.namus.gov/api/CaseSets/NamUs/MissingPersons/Cases/51238/Images/83273/Original
https://www.namus.gov/api/CaseSets/NamUs/MissingPersons/Cases/51238/Images/83274/Original
推荐阅读
- javascript - 使用 JavaScript Papa Parse 将 CSV 文件加载到静态 Python Bokeh Web 应用程序中
- python - 写出一个函数来乘复数
- c++ - 为什么以下代码使用clang而不是gcc编译
- jquery - Jquery对话框模式倒计时
- vba - 将文件下载到不同的路径
- python-3.x - 如何在 Nifi 的虚拟环境中运行具有依赖关系的 python 脚本?
- flutter - 为什么 Flutter Future 不等待
- c# - 为 CLI 实体框架迁移的 DbContext 建立连接字符串时遇到问题
- java - 使用无效 de la 子句 GROUP
- azure - Azure 应用服务 - HTTP 错误 500.30 - ANCM 进程内启动失败