使用beautifulsoup可以隐藏一个人的隐藏吗?

时间:2017-08-29 01:09:09

标签: python html beautifulsoup

我在网站检查中发现了这个

<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()

1 个答案:

答案 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)