【问题标题】:Save Scraped Data as CSV file?将抓取的数据另存为 CSV 文件?
【发布时间】:2019-03-01 12:02:39
【问题描述】:

我正在尝试从包含JSON 数据的链接中抓取数据,这是代码:

    import requests
    import json

    parameters = ['a:1','a:2','a:3','a:4','a:3','a:4','a:5','a:6','a:7','a:8','a:9','a:10',]

    for item in parameters:
        key, value = item.split(':')[0], item.split(':')[1]
        url = "https://xxxx.000webhostapp.com/getNamesEnc02Motasel2.php?keyword=%s&type=2&limit=%s" %(key, value)
        r = requests.get(url)
        cont = json.loads(r.content)
        print(cont)

输出就像

[{'name': 'Absz', 'phone': '66343212'}, {'name': 'ddd ', 'phone': '545432211'}, {'name': 'ezd' 'phone':'54856886'}]

我想将所有数据存储在CSV 文件中。

我该怎么做?

另外,正如您所看到的,我正在使用参数列表来执行多个请求,但我认为有一种方法可以从 1 to 200 循环限制参数,而无需在参数中输入每个关键字和数字。

提前致谢。

【问题讨论】:

  • 欢迎来到本站。这确实是两个问题,我将解决 CSV 问题。你所追求的是一个教程,而这个网站是针对具体实施问题的。这是 Python CSV 模块的精彩介绍,可以帮助您入门。 pymotw.com/2/csv
  • 问题有点糊涂,答不上来。一般的一点是你不需要写key, value = item.split(':')[0], item.split(':')[1],因为Python能够自动解包值:key, value = item.split(':')就足够了
  • 查看 range(0:100) 函数以生成值列表。

标签: python json web-scraping


【解决方案1】:

试试下面的代码,它将创建 csv 行:

import csv
import json

header = ["name","phone"]

for item in range(1,200): 
    key, value = 'a', item # Generating key and value from range 1 --> 200
    url = "https://xxxx.000webhostapp.com/getNamesEnc02Motasel2.php?keyword=%s&type=2&limit=%s" %(key, value)
    r = requests.get(url)
    cont = json.loads(r.content)
    print(cont)



with open('people.csv', 'a') as writeFile:
    writer = csv.writer(writeFile)
    writer.writerow(header)
    for a_row in cont:
        writer.writerow([a_row["name"],a_row["phone"]]) # To write name and phone

希望这能回答你的问题!

【讨论】:

    【解决方案2】:
    import requests
    import json
    import pandas as pd
    
    parameters = ['a:1','a:2','a:3','a:4','a:3','a:4','a:5','a:6','a:7','a:8','a:9','a:10']
    
    results = pd.DataFrame()
    for item in parameters:
        key, value = item.split(':')
        url = "https://xxxx.000webhostapp.com/getNamesEnc02Motasel2.php?keyword=%s&type=2&limit=%s" %(key, value)
        r = requests.get(url)
        cont = json.loads(r.content)
        temp_df = pd.DataFrame(cont)
        results = results.append(temp_df)
    
    results.to_csv('path/to/filename.csv', index=False)
    

    【讨论】:

      猜你喜欢
      • 2017-05-01
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多