【发布时间】:2014-07-21 18:59:50
【问题描述】:
我定义了一个从网页中抓取数据的函数。在这个网页上有 25 个搜索结果(在我的例子中是属性列表)。我编写了代码来查找所有 25 个这些列表,然后尝试使用 for 循环在网页上的每个列表中调用我的函数。但是,输出显示相同的列表打印了 25 次。我想知道是否可以将我的函数details() 应用于页面上的所有 25 个属性列表:listings = soup.find_all('article',{'role' : 'article'})。然后我需要将这些结果输出到 CSV 文件中。
我使用的是 Python 2.7
这是我目前所拥有的:
output = []
property = []
def address():
for address in soup.find('span', {'itemprop' : 'address'}):
property.append(address.text)
def sqft():
for sqft in soup.find('dl',{'class' : 'property-info-sheet pier-5'}):
property.append(sqft.text)
def lot():
for lot in soup.find('dl',{'class' : 'property-info-sheet pier-6'}):
property.append(lot.text)
def built():
for built in soup.find('dl',{'class' : 'property-info-sheet pier-7'}):
property.append(built.text)
def details():
address()
sqft()
lot()
built()
file = 'output.csv'
with open(file,'wb') as f:
writer = csv.writer(f)
writer.writerow(property)
listings = soup.find_all('article',{'role' : 'article'})
for listing in listings:
details()
这会输出相同的列表 25 次。是否有可能获得一个列表一次而不是一个列表 25 次?
【问题讨论】:
标签: python csv for-loop beautifulsoup function