我正在制作一个 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] 删除。
我来说两句