我最近开始学习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()
我做错了什么? 我没有收到任何错误,因为任何原因它都不起作用
答案 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'
}
现在它会起作用。