使用beautifulsoup分别存储数据

时间:2016-12-22 09:15:10

标签: python html beautifulsoup

我试图从Shutterstock中搜索到的页面中收集数据ID。这就是HTML的样子

<i class="i i-lightbox sstk-icon icon-plus-sign js_lightbox_add" data-id="253869514" data-tooltip-title="Add to a lightbox" data-lightboximageid="253869514" data-toggle="modal" data-target=".lightbox-modal" data-track="click.searchResults-saveToLightboxModal" data-original-title="" title=""></i>

我想要存储data-id的值,以便我可以单独打印它们。

此代码例如不起作用,只返回:&#34;无&#34;

url = "https://www.shutterstock.com/search/test?autocomplete_id=&language=en&search_source=&version=llv1&image_type=images&safe=true"
r  = requests.get(url)
data = r.text
soup = BeautifulSoup(data)
for n in soup.find_all('i'):
    showdata = n.get('data-id')

print showdata

如果我将showdata = n.get(&#39; data-id&#39;)更改为:print n.get(&#39; data-id&#39;) 它将返回所有数据ID,但一起返回。所以我不能单独打印它们

1 个答案:

答案 0 :(得分:2)

这样做:

for n in soup.find_all('i'):
    showdata = n.get('data-id')    
    print showdata

您将看到覆盖showdata的迭代,最后一个元素没有类data-id

因此,这将为您提供所有非无匹配的列表:

all_data_ids = []
for n in soup.find_all('i'):
    showdata = n.get('data-id')
    if showdata:
        all_data_ids.append(showdata)

print all_data_ids