python-3.x - 无法从网页获取 csv 链接
问题描述
我努力抓取网页以提取 csv 链接。我使用 selenium webdriver 来获取 bs4 可以使用的页面源。
driver = webdriver.Chrome(executable_path=ChromeDriver_Path, options=options)
driver.get("https://www.apple.com/covid19/mobility")
soup = BeautifulSoup(driver.page_source, "html.parser")
Link = soup.select('#download-card > div.download-button-container > a')[0].text
当我打印(链接)它返回一个空字符串。
解决方案
BeautifulSoup 无法做到这一点,因为它不支持 javascript。那个特定的页面主要是用 javascript 构建的。
您可以改用硒。就像是:
>>> from selenium.webdriver.common.by import By
>>> driver.find_element(By.ID,'download-card').find_element_by_class_name('download-button-container').find_elements_by_tag_name('a')[0].get_attribute('href')
'https://covid19-static.cdn-apple.com/covid19-mobility-data/2014HotfixDev17/v3/en-us/applemobilitytrends-2020-08-16.csv'
你可能可以让它更漂亮。这只是又快又脏。
推荐阅读
- python - 如何使用语音识别在 Python 中终止或结束包含 def 函数的 While 循环
- docker - Traefik 无法连接到 acme 服务器
- pandas - 如何重命名熊猫数据框特定列的字符串值?
- bcrypt - 是否有实现 bcrypt 动态值的 Paw 扩展?
- python - pygame:尝试在 Surface.blit() 中使用“区域”标签
- r - 如何仅向外缓冲一组具有共同边缘的多边形(从边缘,而不是内部“边界”)
- flutter - 该脚本具有不受支持的 MIME 类型 ('text/html')
- karate - 空手道:用条件替换多个键值
- assembly - 为什么这个汇编语言程序一直循环到程序的开头而不是运行?
- python - 在 TKINTER 中创建一个双滚动条窗口