如何跳过一轮" for循环"当我遇到特定的" if"条件?

时间:2016-12-27 07:21:55

标签: python python-3.x web-crawler

我为this网址开发了一个网络抓取工具,但是遇到了问题。

我尝试做的是抓取每辆二手车库存数据列表,如果有"图像"每个数据的第4列的数据(粉红色图像含义"售罄")"价格"标签,我将跳过该列表并继续抓取下一个库存数据。

(我的意思是跳过以下全部代码并开始下一轮" for循环"。"继续"跳过唯一" if&#34 ;函数并继续运行以下代码。)

以下是我的代码

from bs4 import BeautifulSoup
import urllib.request

URL=http://www.bobaedream.co.kr/cyber/CyberCar.php?gubun=I&page=20
res = urllib.request.urlopen(URL)
html = res.read()
soup = BeautifulSoup(html, 'html.parser')
table = soup.find('table', class_='cyber')

# 50 lists per each page
links = []
for p in range(50):

    #Car_Price
    car_price=table.find_all('td', class_='price')
    if car_price[p].find('em').text:
        car_price_confirm = car_price[p].find('em').text
    elif car_price[p].find('em').find('img'):
        pass

    carinfo = table.find_all('td', class_='carinfo')
    carinfo_title = carinfo[p].find('a', class_='title').text
    links.append(carinfo[p].find('a')['href'])

    print(p+1, car_price_confirm, link[p])

2 个答案:

答案 0 :(得分:4)

您正在寻找continue。 它完全符合您的要求。

例如,对不运行打印。 继续跳转到下一个迭代:

for i in range(5):
    if i % 2 == 0:
        continue
    print(i)

# Do not print evens
1
3

This问题也非常有用!

答案 1 :(得分:1)

编辑:继续跳过整个迭代。它对if语句没有影响。检查你的代码。

  

Python中的continue语句将控件返回到while循环的开头。 continue语句拒绝当前循环迭代中的所有剩余语句,并将控件移回循环的顶部。

要跳过当前for循环的其余部分,请使用continue语句。

for p in range(50):
    car_price=table.find_all('td', class_='price')

    if car_price[p].find('em').find('img'):
        continue

    ...