Python 使用循环删除网站时丢失数据

Python 使用循环删除网站时丢失数据,python,loops,screen-scraping,Python,Loops,Screen Scraping,初学者编码器在这里试图做一个简单的网站刮。我想从搜索结果的多个页面中提取项目属性。我可以这样做,但我的问题是,每页末尾的项目似乎丢失了 这是我的循环/计数器的简单错误吗?下面的示例代码应该只是打印x作为第x个搜索结果 import requests from bs4 import BeautifulSoup import xlwt headers = {'user-agent': 'Mozilla/5.0'} pagelimit = 60 #number of results on page

初学者编码器在这里试图做一个简单的网站刮。我想从搜索结果的多个页面中提取项目属性。我可以这样做,但我的问题是,每页末尾的项目似乎丢失了

这是我的循环/计数器的简单错误吗?下面的示例代码应该只是打印x作为第x个搜索结果

import requests
from bs4 import BeautifulSoup
import xlwt

headers = {'user-agent': 'Mozilla/5.0'}
pagelimit = 60 #number of results on page
startoffset = 0 #starting offset  (no. of items


def extract(soup,count):
    x = count
    for div in soup.findAll("div", "result-item standard"):
        print(x)
        x = x+1

offset = startoffset
count = 1
for i in range(0,10):
    url = "http://www.carsales.com.au/cars/results?offset=" + \
    str(offset) + \
    "&q=%28Service%3D%5BCarsales%5D%26%28%28SiloType%3D%5BDealer%20" + \
    "used%20cars%5D%7CSiloType%3D%5BDemo%20and%20near%20new%" + \
    "20cars%5D%29%7CSiloType%3D%5BPrivate%20seller%20cars%5D%29%29" + \
    "&sortby=~Price&limit=" + \
    str(pagelimit) + "&cpw=1"

    r = requests.get(url, headers)
    soup = BeautifulSoup(r.text, "html.parser")
    extract(soup,count)

    offset = str(i*pagelimit+int(startoffset))
    count = count + pagelimit

您的代码做出了两个假设,这可能会导致缺少结果

第一个假设是,每个页面都返回最大数量的结果pagelimit,而最后一个页面不太可能返回最大数量的结果pagelimit。您应该让extract方法返回x的最终值:

def extract(soup,count):
    x = count
    for div in soup.findAll("div", "result-item standard"):
        print(x)
        x = x+1
    return x
然后您应该将count=count+pagelimit替换为类似count=extractsoup,count的内容

然后还可以使用此数字设置偏移


第二个假设是,总有至少10页的汽车。如果少于10页,当您循环到结果列表末尾之外时,您的代码可能会出现异常行为。

谢谢您的反馈!然而,我发现原因是,其中混合了与结果项标准不同的div类搜索结果。