我是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']
答案 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']