为我的网络抓取工具循环传递错误

时间:2019-03-04 22:33:58

标签: python selenium

我目前正在为我的网络抓取程序运行一个循环。如果遇到错误(即无法加载页面),我将其设置为忽略它并继续循环。

for i in links:
try:
    driver.get(i);
    d = driver.find_elements_by_xpath('//p[@class = "list-details__item__date"]')
    s = driver.find_elements_by_xpath('//p[@class = "list-details__item__score"]')
    m = driver.find_elements_by_xpath('//span[@class="list-breadcrumb__item__in"]')
    o = driver.find_elements_by_xpath('//tr[@data-bid]');
    l = len(o)
    lm= len(m)
    for i in range(l):
        a = o[i].text
        for i in range(lm):
            b = m[i].text
            c = s[i].text
            e = d[i].text
            odds.append((a,b,c,e))
except:
    pass

但是,我现在希望在遇到错误时有某种注释,以便我可以查看未加载的页面。即使在输出表中将它们留为空白,也可以。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以为异常添加一个捕获,然后对该捕获执行某些操作。这应该适合您的脚本。

import ... (This is where your initial imports are)
import io
import trackback 

for i in links:
    try:
        driver.get(i);
        d = driver.find_elements_by_xpath('//p[@class = "list-details__item__date"]')
        s = driver.find_elements_by_xpath('//p[@class = "list-details__item__score"]')
        m = driver.find_elements_by_xpath('//span[@class="list-breadcrumb__item__in"]')
        o = driver.find_elements_by_xpath('//tr[@data-bid]');
        l = len(o)
        lm= len(m)
        for i in range(l):
            a = o[i].text
            for i in range(lm):
                b = m[i].text
                c = s[i].text
                e = d[i].text
               odds.append((a,b,c,e))
    except Exception as error_script:
        print(traceback.format_exc())
        odds.append('Error count not add')

基本上,发生的是您使用exception Exception as error_script: line. Afterwards , you can print the actual error message to the console using the traceback.format_exc()命令捕获了异常。

但是最重要的是,您可以通过在异常捕获中传递append语句将字符串追加到列表中,并在异常末尾使用pass。 pass将运行他捕获的代码,然后转到下一个迭代。