Python一直平稳运行,直到出现刮片错误为止。它试图使用try和except修复该错误,但似乎没有

2024-10-02 04:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

Python新手在这里练习我的技能。我遇到了一个路障,如果能得到一些帮助,我将非常高兴。我想做的是从电子表格中获取链接列表。从那里,Python将获取数据,提取特定类并将数据粘贴到ColB。问题是,当链接断开时,会出现一些实例,因此不会有数据被刮取。我曾经试着去解决这个问题,但它似乎不起作用。它似乎做的是,当错误发生时,它只是跳过写入数据,然后继续将数据写入错误的单元格。这是我的密码:

credentials = ServiceAccountCredentials.from_json_keyfile_name('Te....4e.json', scope)

gc = gspread.authorize(credentials)


#selects the spreadsheet
sh = gc.open_by_url('https://docs.google.com/spreadsheets/d/1u7....0')


worksheet = sh.worksheet('Keywords')
colvalue = "A"
rownumber = 2
updaterowvalue = 2

while rownumber <100:
    try:
        val = worksheet.acell(colvalue +str(rownumber)).value
        rownumber += 1
        url = val    
        #scrape elements
        response = requests.get(url)
        soup = BeautifulSoup(response.content, "html.parser")
        #print titles only
        h1 = soup.find("h1", class_= "sg-text--headline")    
        updatecolvalue = "B"    
                worksheet.update_acell(updatecolvalue +str(updaterowvalue), h1.get_text())
        updaterowvalue +=1
    except AttributeError:
        pass

print('DONE')

Tags: 数据jsonurl链接sh错误valh1
1条回答
网友
1楼 · 发布于 2024-10-02 04:27:59

我假设起始worksheet.update_acell行上的额外缩进是一个错误,因为您的代码是无效的

问题是,当发生异常时,updaterowvalue +=1不会执行,这会导致结果与URL不同步

解决这个问题很简单,只需停止使用updaterowvalue,只需在worksheet.update_acell()调用中使用rownumber。由于您希望结果与URL位于同一行中,因此updaterowvalue是不必要的

编写循环的一种更具python风格的方法是:

for rownumber in range(2,100):

这也允许您消除rownumber += 1

相关问题 更多 >

    热门问题