【发布时间】:2019-08-27 03:51:22
【问题描述】:
我目前正在抓取一个 XML API 响应。我希望为每个请求收集一条信息,并在每次找到这条数据时创建一个字典。每个请求可以有多个 ID。因此,一个响应可以有 2 个 ID,而下一个响应可能有 3 个 ID。例如,假设第一个响应有 2 个 ID。当第二个请求完成时,我将这些数据存储在一个列表中,另外 3 个 ID 也存储在同一个列表下。
import requests
import pandas as pd
from pandas import DataFrame
from bs4 import BeautifulSoup
import datetime as datetime
import json
import time
trackingDomain = ''
domain = ''
aIDs = []
cIDs = []
url = "https://" + domain + ""
print(url)
df = pd.read_csv('campids.csv')
for index, row in df.iterrows():
payload = {'api_key':'',
'campaign_id':'0',
'site_offer_id':row['IDs'],
'source_affiliate_id':'0',
'channel_id':'0',
'account_status_id':'0',
'media_type_id':'0',
'start_at_row':'0',
'row_limit':'0',
'sort_field':'campaign_id',
'sort_descending':'TRUE'
}
print('Campaign Payload', payload)
r = requests.get(url, params=payload)
print(r.status_code)
soup = BeautifulSoup(r.text, 'lxml')
success = soup.find('success').string
for affIDs in soup.select('campaign'):
affID = affIDs.find('source_affiliate_id').string
aIDs.append(affID)
dataDict = dict()
dataDict['offers'] = []
affDict = {'affliate_id':aIDs}
dataDict['offers'].append(dict(affDict))
结果如下:
dictData = {'offers': [{'affliate_id': ['9','2','45','47','14','8','30','30','2','2','9','2']}]}
我想做的是:
dictData = {'offers':[{'affiliate_id'['9','2','45','47','14','8','30','30','2','2']},{'affiliate_id':['9','2']}]}
在第一次请求时,我获得以下信息:
IDs['9','2','45','47','14','8','30','30','2','2']
在第二次请求时返回这些 ID:
['9','2']
我是 Python 新手,所以请多多包涵,就礼仪而言,我遗漏了一些东西。我很乐意提供任何其他信息。
【问题讨论】:
-
您能提供其中一个网址作为示例吗?
标签: python-3.x pandas beautifulsoup python-requests