from bs4 import BeautifulSoup
import requests
def imdb_spider():
url = 'http://www.imdb.com/chart/top'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text)
for link in soup.findAll('a', {'class': 'secondaryInfo' }):
href = link.get('href')
print(href)
imdb_spider()
我试图从imdb获取所有收视率最高的电影的链接。我正在使用pycharm。代码运行超过30分钟,但我没有在我的控制台中获得任何打印。
答案 0 :(得分:1)
对于每个电影标题,都有一个带有secondaryInfo
类的元素,这是正确的,但这不是a
元素。如果要查找,则必须使用其他选择器。例如,以下选择器将执行该操作,而不是使用soup.findAll()
。
soup.select('td.titleColumn a')
答案 1 :(得分:0)
问题是{'class': 'secondaryInfo' }
是<span>
对象的参数。
所以试试这个:
from bs4 import BeautifulSoup
import requests
def imdb_spider():
url = 'http://www.imdb.com/chart/top'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "lxml")
for td in soup.findAll('td', {'class': 'titleColumn'}):
href = td.find('a').get('href')
print(href)
imdb_spider()