我有一个基本脚本来连接ebay API并搜索关键字项。该脚本可以正常工作,但是很遗憾,它仅搜索前100个项目,如何增加搜索结果的数量?
from ebaysdk.finding import Connection as finding
from bs4 import BeautifulSoup
Keywords = 'Ford'
api = finding(appid='APP ID', config_file=None)
api_request = { 'keywords': Keywords, 'outputSelector': 'SellerInfo' }
response = api.execute('findItemsByKeywords', api_request)
soup=BeautifulSoup(response.content, 'lxml')
totalentries = int(soup.find('totalentries').text)
items= soup.find_all('item')
我终于把这个分类了。 paginationInput实际上是它自己中的一个字典,这让我有些困惑。同样由于某种原因,使用findItemsAdvanced代替findItemsByKeywords更为有用。
Keywords = product
api = finding(appid='APP_ID', config_file=None)
api_request = { 'keywords': product,'outputSelector': 'SellerInfo' , 'categoryId': ['33034'], 'paginationInput':{'entriesPerPage':100, 'pageNumber':1} }
response = api.execute('findItemsAdvanced', api_request)
soup=BeautifulSoup(response.content, 'lxml')
答案 0 :(得分:0)
Ebay可能是paginating,这意味着他们将每个页面的条目划分为多个响应。
他们对查询的响应应具有当前页码和总页数,您需要请求以下所有您感兴趣的页面。
答案 1 :(得分:0)
这已记录在page for findItemsByKeywords
上。
在您的API请求参数中添加一个paginationInput.pageNumber
参数,例如
from ebaysdk.finding import Connection
from bs4 import BeautifulSoup
Keywords = "Ford"
api = Connection(appid="APP ID", config_file=None)
items = []
for page in range(1, 11):
api_request = {
"keywords": Keywords,
"outputSelector": "SellerInfo",
"paginationInput.pageNumber": page,
}
response = api.execute("findItemsByKeywords", api_request)
soup = BeautifulSoup(response.content, "lxml")
totalentries = int(soup.find("totalentries").text)
items.extend(soup.find_all("item"))
print(items)