为什么这段代码不起作用? *完成Noob *

时间:2016-01-18 13:00:11

标签: python beautifulsoup python-requests

我最近开始学习Python,我想创建一个程序,向我展示AllMusic的所有新版本,但它不起作用。对不起,我是一个完整的菜鸟。起初我想看看艺术家:

import requests
from bs4 import BeautifulSoup


def new_releases():
    url = "http://allmusic.com/newreleases"
    source_code = requests.get(url)
    plain_text = source_code.text
    soup = BeautifulSoup(plain_text)
    for div in soup.findAll('div', {'class': 'artist'}):
        for a in div.findAll('a'):
            artist = a.string
            print(artist)

new_releases()

我做错了什么? 我没有收到任何错误,因为任何原因它都不起作用

1 个答案:

答案 0 :(得分:3)

实际上,你的代码很好。但是你试图抓住的网站阻止你这样做。如果你以这种方式打印汤,你会发现:print(soup)

为避免这种情况,您可以在requests.get中指定用户代理(请参阅NHibernate's Optimistic concurrency control)标题:

source_code = requests.get(url, headers=headers)

其中headers是这样的字典:

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0'
}

现在它会起作用。