使用 Python 请求模块时解析 Angular.JS

AFW

我正在制作一个 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 }}" >

我已经尝试寻找使用请求模块的替代方法,但我找不到其他人专门讨论这个问题,所以我使用其他模块的大部分尝试都是在黑暗中完成的。我必须有哪些替代方法来检索 Angular href?

丹德夫

requests-html 的问题是您的 URL 包含 # 或片段标识符

来自https://en.wikipedia.org/wiki/Fragment_identifier

当代理(例如 Web 浏览器)从 Web 服务器请求 Web 资源时,代理将 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python请求模块时尝试/例外

使用Python“请求”模块的代理

使用Python“请求”模块的代理

在node.js中使用请求模块时,POST请求状态代码(500)。Postman中的POST请求工作正常

使用Angular JS提交时隐藏表单

从Angular JS使用Web API令牌认证时出现错误请求(400)

在 Angular Js 中加载模块时出错

使用请求模块抓取Node.js

使用请求模块的Node.JS代理

找不到模块:错误:使用外部JS库时无法解析...

使用 python 中的请求模块连接到 Azure-Datalakes-gen2 时遇到问题

使用Angular JS将常量注入其他模块配置

使用Node的http模块服务angular.min.js

如何使用Angular JS拦截每个Ajax请求

如何使用 angular js 1 同时执行多个 post 请求

使用angular js和$ http请求登录不起作用

使用Python解析JSON时,“模块”对象没有属性“加载”

使用Angular.js解析JSON中的嵌套对象数组

如何使用angular.js将xml解析为JSON?

在 Angular 中使用 Http 模块时出错

尝试/使用Python请求模块的正确方法?

使用Python请求模块上传文件

使用python请求模块进行HTTP删除

如何使用Python的“请求”模块“登录”网站?

如何使用Python的“请求”模块“登录”网站?

使用 Python 请求模块登录 Robinhood

使用Python的“请求”模块登录ASP网站

使用python发出发布请求时,如何解决解析错误?

使用angular.js和angular-sanitize.js时,src从json html数据中剥离