gpt4 book ai didi

python - 使用 Python 将多个 URL 中的不同变量抓取到一个 CSV 文件中

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:04 26 4
gpt4 key购买 nike

我正在尝试将多个 URL 中的数据抓取到一个 csv 文件中,这让我抓狂;)

我确实知道这可能是一个常见问题,而且我不是第一个尝试这样做的人,但不知何故,我无法在我的代码上应用其他人的解决方案,因为它们并不是真正的“soup.find”-像我一样一个接一个地查找多个变量。我的方法可能太基础了。

因此,我首先使用 BeautifulSoup 从单个 URL 中获取多个内容(让我们使用 namejobworksfor)并将其导出导入 csv 文件并且工作正常:

import urllib.request
import requests
from bs4 import BeautifulSoup
from urllib.request import urlopen
import csv

url = "https://www.someurl.com/person.asp?personId=123456789"

page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "lxml")

name = soup.find("h1", {"class": "name"}).get_text()
job = soup.find("span", {"itemprop": "jobTitle"}).get_text()
worksfor = soup.find("a", {"itemprop": "worksFor"}).get_text()

with open('output.csv', 'w') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=';', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow([name, job, worksfor])

然后我正在查找如何打开保存在文件 (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"}):
print(name)

这也很好用,但我很难尝试将这两种方法结合到代码中,为我的 urls.csv 中的每个 URL 提供一个包含一行(名称;年龄;作品)的 csv 文件

非常感谢您的建议

<小时/>

@SuperStew:是的,至少没有产生任何错误的方法之一如下:

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])

最终的 CSV 总是只包含列表中最后一个 URL 中的变量,可能会覆盖所有其他变量。

最佳答案

是的,这看起来不错,除了最后将结果写入 csv 的部分。您基本上会重写每个 url 的 csv,这意味着当您的代码完成时,只会保留最后一个。为了避免这种情况,您可以以 append 模式打开 csv 文件,而不是write。只是一个小小的改变

with open('output.csv', 'a') as csvfile:

关于python - 使用 Python 将多个 URL 中的不同变量抓取到一个 CSV 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48888168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com