我在网站检查中发现了这个
<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()
答案 0 :(得分:1)
您要查找的数据实际上位于HTML响应中,但它位于具有data-blob
的元素的id="pagedata"
属性中。该数据由浏览器中执行的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)