9 python beautifulsoup html-parsing web-scraping
我正在使用BeautifulSoup从IMDb获取HTML页面,我想从页面中提取海报图像.我有基于其中一个属性的图像,但我不知道如何提取其中的数据.
这是我的代码:
url = 'http://www.imdb.com/title/tt%s/' % (id)
soup = BeautifulSoup(urllib2.urlopen(url).read())
print("before FOR")
for src in soup.find(itemprop="image"):
print("inside FOR")
print(link.get('src'))
Run Code Online (Sandbox Code Playgroud)
Zer*_*eus 10
你几乎就在那里 - 只是几个错误.soup.find()获取匹配的第一个元素,而不是列表,因此您不需要迭代它.获得元素后,您可以src使用字典访问获取其属性(如).这是一个返工版本:
film_id = '0423409'
url = 'http://www.imdb.com/title/tt%s/' % (film_id)
soup = BeautifulSoup(urllib2.urlopen(url).read())
link = soup.find(itemprop="image")
print(link["src"])
# output:
http://ia.media-imdb.com/images/M/MV5BMTg2ODMwNTY3NV5BMl5BanBnXkFtZTcwMzczNjEzMQ@@._V1_SY317_CR0,0,214,317_.jpg
Run Code Online (Sandbox Code Playgroud)
我已经改变id了film_id,因为它id()是一个内置函数,掩盖它们是不好的做法.
我相信你的榜样非常接近.你需要使用findAll()而不是find(),当你迭代时,你从src切换到链接.在下面的示例中,我将其切换为tag
这段代码适用于BeautifulSoup4:
url = 'http://www.imdb.com/title/tt%s/' % (id,)
soup = BeautifulSoup(urllib2.urlopen(url).read())
print "before FOR"
for tag in soup.findAll(itemprop="image"):
print "inside FOR"
print(tag['src'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28242 次 |
| 最近记录: |