我正在尝试从网站查找链接,但是当我获得链接时,它显示链接为"#"



下面是我使用的代码

for link in f:

r = requests.get(link,verify=True)
soup = BeautifulSoup(r.content,'html5lib')
soup.encode('utf-8')
table = soup.find('div',attrs={'class':'right'})
print(table.div.a)
download = table.div.a['href']    

在这里,我没有得到下载链接,而是得到了一个"#">

  • 我正在抓取的链接:https://www54.zippyshare.com/v/2Mu2T2KI/file.html

  • 期望输出:

/d/2qeYvgEb/29682/Horizon%20-%20Zero%20Dawn%20CE%20--%20fitgirl-repacks.site%20--.part01.rar

  • 输出获取:#

问题是链接在原始html中不存在,但它使用js脚本进行了更改。为了能够找到链接,你需要让js运行。我认为使用bs4是不可能的。

另一种方法是使用requests-html:

from requests_html import HTMLSession
session = HTMLSession()
root = 'https://www54.zippyshare.com'
link = 'https://www54.zippyshare.com/v/2Mu2T2KI/file.html'
r = session.get(link)
r.html.render()  # this will load js
download_link = root + r.html.find('.right', first=True).find('a', first=True).attrs['href']

注意,我使用了一个css选择器.right;这与class:right相同,尽管后者在requests-html上不受支持。first=True参数的作用与在bs4中使用find而不是find_all相同。

此处,所有链接都将显示在此站点中

import pandas as pd
import requests
from bs4 import BeautifulSoup
url = "https://www54.zippyshare.com/v/2Mu2T2KI/file.html"
r = requests.get(url)
htmlcontent  = r.content
soup = BeautifulSoup(htmlcontent,'html.parser')
#print(soup.prettify)

df = soup.find_all("a")
for data in df:
dx = data.get('href')
if dx != "#":
print(dx)

希望它能帮助您

最新更新