【问题标题】:Parsing through URL's in CSV file - Python通过 CSV 文件中的 URL 解析 - Python
【发布时间】:2021-03-04 02:24:31
【问题描述】:

我有一个 URL 的 CSV 文件,我正在尝试编写一个代码来循环遍历这些 URL 并将它们附加到字典中的特定变量。不幸的是,每当我尝试使用漂亮的汤时,程序都不会分隔 URL 或只分隔第一个 URL。我知道这可能是一个简单的问题,但我无法使用类似问题的解决方案来解决这个问题。下面我附上了代码的摘录。感谢您的指导。

csv_data:
'https://www.sec.gov/Archives/edgar/data/78003/000007800313000017,https://www.sec.gov/Archives/edgar/data/78003/000115752312004450,https://www.sec.gov/Archives/edgar/data/78003/000115752312002789,https://www.sec.gov/Archives/edgar/data/78003/000007800313000013,https://www.sec.gov/Archives/edgar/data/78003/000007800313000029,https://www.sec.gov/Archives/edgar/data/78003/000007800312000008,https://www.sec.gov/Archives/edgar/data/78003/000007800314000046'


content = requests.get(csv_data[1]).content
soup = BeautifulSoup(content, 'lxml')

reports = soup.find('myreports')

master_reports = []

for report in reports.find_all('report')[:-1]:

report_dict = {}
report_dict['name_short'] = report.shortname.text
report_dict['category'] = report.menucategory.text
report_dict['url'] = base_url + report.htmlfilename.text

master_reports.append(report_dict)

print(base_url + report.htmlfilename.text)
print(report.shortname.text)
print(report.menucategory.text)

【问题讨论】:

  • 你的 csv 数据实际上是一个字符串吗?
  • 如果你能展示一个有用的数据示例
  • 原来是一个列表,后来我用'df = pd.DataFrame(list1)'把它转换成CSV。
  • csv_data[1] 未定义。请考虑修复该问题并确保您的代码可重现。

标签: python pandas csv dictionary append


【解决方案1】:

这就是你要找的吗?拆分 url 列表并循环?如果是这样,您必须收集每个循环的输出,此处未编码。

csv_data = 'https://www.sec.gov/Archives/edgar/data/78003/000007800313000017,https://www.sec.gov/Archives/edgar/data/78003/000115752312004450,https://www.sec.gov/Archives/edgar/data/78003/000115752312002789,https://www.sec.gov/Archives/edgar/data/78003/000007800313000013,https://www.sec.gov/Archives/edgar/data/78003/000007800313000029,https://www.sec.gov/Archives/edgar/data/78003/000007800312000008,https://www.sec.gov/Archives/edgar/data/78003/000007800314000046'
csv_url_list = csv_data.split(',')
for url in csv_url_list:
    content = requests.get(url).content
    soup = BeautifulSoup(content, 'lxml')
    reports = soup.find('myreports')

    master_reports = []

    for report in reports.find_all('report')[:-1]:

    report_dict = {}
    report_dict['name_short'] = report.shortname.text
    report_dict['category'] = report.menucategory.text
    report_dict['url'] = base_url + report.htmlfilename.text

    master_reports.append(report_dict)

    print(base_url + report.htmlfilename.text)
    print(report.shortname.text)
    print(report.menucategory.text)

【讨论】:

  • 嗨,是的,这就是我想要做的,我只是不熟悉遍历列表并在每个循环中附加输出信息。你知道的任何例子都适用于我的例子吗?
  • 如果你能提供主报告的样子,也许我可以提供一些帮助。目前尚不清楚您访问的每个链接的输出是什么。数据框、列表、字典等?
  • 这是一个包含这些链接中的名称、类别和 URL 的列表。格式如下所示:-------------------------------------------- ---------------------------- sec.gov/Archives/edgar/data/200406/000020040620000035/R1.htm 0001000 - 文档 - 封面 Cover Cover 1
  • 如果我导航到 sec.gov/Archives/edgar/data/78003/000007800313000017,我无法在报告 = soup.find('myreports') 中得到结果。所以目前还不清楚你希望如何为列表中的所有链接捕获它。你能发布什么报告吗?什么是reports.find_all('report')?
猜你喜欢
  • 1970-01-01
  • 2015-09-24
  • 2015-06-09
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
相关资源
最近更新 更多