繁体   English   中英

使用Python和BeautifulSoup进行Webscrape-保存到csv文件时出错

[英]Webscrape using Python and BeautifulSoup - Error saving to csv file

我正在尝试编写一个脚本,该脚本将从此网站抓取房地产经纪人的姓名,角色和电话号码。

我的代码:

containers = page_soup.findAll("div",{"class":"card horizontal-split vcard"})

filename = "agents.csv"
f = open(filename, "w")

headers = "name, role, number\n" 

f.write(headers)

for container in containers:
    agent_name = container.findAll("li", {"class":"agent-name"})
    if agent_name:
        name = agent_name[0].text

    agent_role = container.findAll("li", {"class":"agent-role"})
    if agent_role:
        role = agent_role[0].text

    filterfn = lambda x: 'href' in x.attrs and x['href'].startswith("tel")
    phones = list(map(lambda x: x.text,filter(filterfn,container.findAll("a"))))

    print("name: " + name)
    print("role: " + role)
    print("phones:" + repr(phones))

    f.write(name + "," +role + "," + phones.replace(",", "|") + "," + "\n")

f.close()

我的代码在终端中正常运行,然后尝试将其保存到可以在excel中打开的csv文件中。 但是,现在我收到两个错误消息:

TypeError: must be str, not list
f.write(name + "," +role + "," + phones.replace(",", "|") + "," + "\n")

f.write(name + "," +role + "," + phones.replace(",", "|") + "," + "\n")
AttributeError: 'list' object has no attribute 'replace'

**注意,我将“,”替换为“ |” 以避免在csv文件中创建多余的列。*

正如错误所提到的, phones是一个没有replace()方法的列表。 您可以使用.join()代替使用指定的分隔符(在这种情况下|.join()列表中的元素:

f.write(name + "," +role + "," + '|'.join(phones) + "," + "\n")

例如:

>>> phones = ['123', '321', '123']
>>> '|'.join(phones)
'123|321|123'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM