首页 > 解决方案 > EBAY 查找 API 日期过滤

问题描述

我正在尝试使用 ebay API 返回给定类别中已完成项目的列表。我的代码似乎正在运行,但结果似乎非常有限(大约 100 个)。我假设 api 可以追溯到多远会有一些限制,但即使是几天也应该返回这个类别的数千个结果。我是否遗漏了代码中的某些内容,或者这只是 ebay API 的限制?我确实确保我使用的是生产而不是沙箱。

所以我现在已经意识到我的查询有多个页面,最多 100 项/100 页。我现在遇到了日期过滤的问题。我在现场看到了过滤器参考资料,但我仍然没有得到我期望的结果。在更新的查询中,我试图只提取昨天完成的项目,但在运行时我从今天开始获取东西。有没有更好的方法来输入日期过滤器?

from ebaysdk.finding import Connection as finding
from bs4 import BeautifulSoup
import os
import csv

api = finding(appid=<my appid>,config_file=None)

response = api.execute(
             'findCompletedItems', {
                        'categoryId': '214',
                        'keywords' : 'prizm', 
                        'endTimeFrom' : '2020-02-03T00:00:00.000Z',
                        'endTimeTo' : '2020-02-04T00:00:00.000Z' ,
                        'paginationInput': {
                                'entriesPerPage': '100',
                                'pageNumber': '1'
                                            },
                        'sortOrder': 'EndTimeSoonest'
                                    }
                        )

soup = BeautifulSoup(response.content , 'lxml')

totalitems = int(soup.find('totalentries').text)
items = soup.find_all('item')

for item in response.reply.searchResult.item:
    print(item.itemId)
    print(item.listingInfo.endTime)

标签: pythonebay-api

解决方案


我终于想通了。我需要为项目过滤器添加额外的代码。工作代码如下。

from ebaysdk.finding import Connection as find from bs4 import BeautifulSoup import os import csv

api = finding(appid=<my appid>,config_file=None)

response = api.execute(
             'findCompletedItems', {
                        'categoryId': '214',
                        'keywords' : 'prizm',
                         'itemFilter': [
                                        {'name': 'EndTimeFrom', 'value': '2020-02-03T00:00:00.000Z'},
                                        {'name': 'EndTimeTo', 'value': '2020-02-04T00:00:00.000Z'}
                                        #{'name': 'MinPrice', 'value': '200', 'paramName': 'Currency', 'paramValue': 'GBP'},
                                        #{'name': 'MaxPrice', 'value': '400', 'paramName': 'Currency', 'paramValue': 'GBP'}
                                       ],
                        'paginationInput': {
                                'entriesPerPage': '100',
                                'pageNumber': '100'
                                            },
                        'sortOrder': 'EndTimeSoonest'
                                    }
                        )

soup = BeautifulSoup(response.content , 'lxml')

totalitems = int(soup.find('totalentries').text)
items = soup.find_all('item')

for item in response.reply.searchResult.item:
    print(item.itemId)
    print(item.listingInfo.endTime)

推荐阅读