gpt4 book ai didi

python - 可以使用 beautifulsoup 隐藏 href 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:14 24 4
gpt4 key购买 nike

我在网站检查中找到了这个

<a data-bind="attr: { 'href': bandURL }, text: artist, click: playMe"  
class="item-artist" href="https://bogseyandtheargonauts.bandcamp.com?
from=discover-top">Bogsey</a>

当我抓取时,我只得到这个

<a class="item-artist" data-bind="attr: { 'href': bandURL }, text: 
artist, click: playMe"/a>

我正在尝试查找链接,但由于某种原因,href 被隐藏了,有没有办法隐藏链接以防止抓取,或者我是否没有使用正确的工具。我知道查找 href 的代码,但现在我只是想返回带有 href 值的整个标签

class BandCamp:
def Search(self):
page = requests.get("https://bandcamp.com/?g=punk&s=top&p=0&gn=0&f=all&t=folk-punk")
data = page.content
soup = BeautifulSoup(data,'lxml')
for top in soup.find_all('div', {'class':'col col-3-12 discover-item'}):
link = top.find('a')
print(top)

bc = BandCamp()
bc.Search()

最佳答案

您要查找的数据实际上位于 HTML 响应中,但它位于具有 id="pagedata" 的元素的 data-blob 属性内。该数据由浏览器中执行的 JavaScript 进行处理; requests 虽然不是浏览器,但它只会下载一个初始的“未渲染”页面。

以下是如何使用“页面数据”定位元素并将其加载到 Python 字典中:

import json
from pprint import pprint

from bs4 import BeautifulSoup
import requests


page = requests.get("https://bandcamp.com/?g=punk&s=top&p=0&gn=0&f=all&t=folk-punk")
data = page.content
soup = BeautifulSoup(data, 'lxml')

page_data = soup.find(id="pagedata")["data-blob"]
page_data = json.loads(page_data)

pprint(page_data)

关于python - 可以使用 beautifulsoup 隐藏 href 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45929283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com