Python csv写错误 - 字符串索引必须是整数,而不是str

时间:2017-07-12 06:34:38

标签: python csv web-scraping beautifulsoup

我正在尝试根据搜索字词从网站中提取链接并将其写入csv文件。文件已创建但链接未写入其中。我得到错误 - 字符串索引必须是整数,而不是str。

无法弄清楚我的错误。

from pprint import pprint
import requests
import lxml
import csv
from bs4 import BeautifulSoup

def get_url_for_search_key(search_key):
    base_url = 'http://www.marketing-interactive.com/'
    response = requests.get(base_url + '?s=' + search_key)
    soup = BeautifulSoup(response.content, "lxml")

    return [url['href'] for url in soup.findAll('a', {'rel': 'bookmark'})]

pprint(get_url_for_search_key('digital marketing'))
with open('ctp_output.csv', 'wb') as f:
    writer = csv.writer(f)
    for url in get_url_for_search_key('digital marketing'):
           writer.writerows( url['href'] )

1 个答案:

答案 0 :(得分:0)

您的函数返回列表,其中url为字符串。 所以你不需要url ['href'],因为它已经在你的功能中得到了照顾。

尝试

writer.writerows( url )

而不是:

writer.writerows( url['href'] )

我不知道csv模块是如何工作的,但你不需要这里的csv

尝试:

with open('ctp_output.csv', 'w') as f:
    f.write('\n'.join(get_url_for_search_key('digital marketing')))