python - python beautifulsoup href 打印为 #
问题描述
当我尝试为 .zip 文件提取特定的 href 时,返回的只是 #
我已经剥离了我的脚本,所以只剩下棘手的部分。当我在不使用 opener.open 的情况下使用测试 html(它是目标站点的副本)运行脚本时,它工作正常。当我在实际站点上运行它时,我只收到#。
任何帮助将不胜感激。
#!usr/bin/env python3
from bs4 import BeautifulSoup
import urllib.request
class Opener(urllib.request.FancyURLopener):
version = "Mozilla/5.0"
opener = Opener()
test = '<a id="dlbutton" href="https://www55.zippyshare.com/d/H7prSkjz/2176/Barrier%20Line%20Riddim%20-%20%20J.%20Small%20Records.zip"><div class="download"></div></a>'
dstar = 'https://www55.zippyshare.com/v/H7prSkjz/file.html'
def grabzip(url):
link = BeautifulSoup(opener.open(url), "html.parser")
for ziplink in link.find_all('a', id="dlbutton"):
print(ziplink.get('href'))
grabzip(dstar)
解决方案
您可以使用 Selenium/ Chromedriver动态导航站点并获取 href:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("https://www55.zippyshare.com/v/H7prSkjz/file.html")
print(driver.find_element_by_id("dlbutton").get_attribute("href"))
输出
https://www55.zippyshare.com/d/H7prSkjz/16761/Barrier%20Line%20Riddim%20-%20%20J.%20Small%20Records.zip
推荐阅读
- javascript - 如何在 JSPDF 中编辑 TextField() 的字体大小?
- javascript - 省略等待让方法并行运行是否安全?
- sql-server - T-SQL n 行表示 2 天之间的天数
- sql - SQL Merge - 仅插入特定列已更新的位置
- python - 图片保存后不显示
- typescript - TypeScript:具有除一个之外的任何键的对象
- java - 使用 Netty 接收到的消息是否有可能出现故障或受限?
- redis - HMSET 和字段值
- db2 - DB2 从多个用户的数据库中撤销用户权限
- google-cloud-platform - NestJS - 将静态(非导入)文件复制到 dist 文件夹的正确方法