每次交互都在python中扩展一个列表

时间:2016-01-11 10:55:46

标签: python

我是python的新手,想扩展一个列表。我从airbnb网站上获取信息。这些网站已编号,我想扩展我的列表。我现在的问题是我无法扩展此列表。这是我的python代码。如何编写一个简单的函数来扩展每次迭代的列表?

import requests
from bs4 import BeautifulSoup

site_url = 'https://www.airbnb.ch/s/Basel--Schweiz?page='

for i in range(1, 18):
        r = requests.get(site_url + str(i), timeout=5)
        soup = BeautifulSoup(r.text, 'lxml')
        attributeList += soup.find_all(attrs={"data-name": True, "data-lat": True, "data-lng": True})

 for attribute in attributeListExtended:
    print attribute['data-name'], attribute['data-lat'], attribute['data-lng']

1 个答案:

答案 0 :(得分:1)

在开始迭代之前,您只需要定义一个空列表来添加结果。 soup.find_all会生成一个列表,然后您可以将其添加到现有列表中。

您的代码中的问题是您尝试将soup.find_all的结果添加到尚未定义的列表中。首先创建这个(空)列表,你应该能够毫无问题地将新结果附加到它上面。

import requests
from bs4 import BeautifulSoup

site_url = 'https://www.airbnb.ch/s/Basel--Schweiz?page='
attributeList = []
for i in range(1, 18):
        r = requests.get(site_url + str(i), timeout=5)
        soup = BeautifulSoup(r.text, 'lxml')
        newAttributes = soup.find_all(attrs={"data-name": True, "data-lat": True, "data-lng": True})
        attributeList += newAttributes

然后您可以遍历该列表并打印结果:

for attribute in attributeList:
    print attribute['data-name'], attribute['data-lat'], attribute['data-lng']