我正在尝试将多个网址中的数据划分到一个单独的csv文件中,这让我发疯;)
我知道这可能是一个常见的问题,而且我不是第一个尝试这样做的人,但不知何故我无法将其他人的解决方案应用于我的代码,因为他们并非真的“汤。找到“ - 像我一样一个接一个的多个变量。我的做法可能过于基本。
所以我开始使用BeautifulSoup从单个网址抓取多个内容(让我们使用名称,作业和 worksfor )并将其导出进入一个csv文件,它工作正常:
with open('urls.csv') as inf:
urls = (line.strip() for line in inf)
for url in urls:
site = urlopen(url)
soup = BeautifulSoup(site, "lxml")
for name in soup.find("h1", {"class": "name"}):
print(name)
然后我正在查找如何打开保存在文件(urls.csv)中的多个URL并抓取(此处:打印),例如名称。这里有三个名字。
with open('urls.csv') as inf:
urls = (line.strip() for line in inf)
for url in urls:
site = urlopen(url)
soup = BeautifulSoup(site, "lxml")
for name in soup.find("h1", {"class": "name"}):
with open('output.csv', 'w') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=';', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow([name, job, worksfor])
这也可以正常工作,但是我很难将这两种方法结合到代码中,这些代码可以为我的urls.csv中的每个URL提供一行(name; age; worksfor)的csv文件
非常感谢您的任何建议
@SuperStew:对,所以其中一种至少没有产生任何错误的方法如下:
#pragma warning disable 1591
//Your code that generates warning CS1591 here
#pragma warning restore 1591
这总是最终只有CSV,其中只包含我列表中最后一个URL的那些变量,可能会覆盖所有其他变量。
答案 0 :(得分:1)
正确,所以这看起来很好,除了你把结果写到csv的最后一部分。你基本上为每个url重写了csv,这意味着你的代码完成后只剩下最后一个。为避免这种情况,您可以在append
模式下打开csv文件,而不是write
。只是一个小小的改变
with open('output.csv', 'a') as csvfile: