报错的问题

报错的问题

老师,我一开始写的value = value_search.findall(response.url)[0],报错,然后下载了资料里的代码改的

try:
   value = value_search.findall(response.url)[0]
except:
   print('11111111111', response.url)

打印出来的url我看了也挺正常的呀,怎么会报错呢

http://img1.sycdn.imooc.com//climg/5e7f6c790976ed2011800560.jpg

http://img1.sycdn.imooc.com//climg/5e7f6c79092b805512050592.jpg


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学,你好。该问题是下标越界的错误,根据下标0取值时取不到,因此会报错。同学可以只打印出根据下标取值前得到的数据,看下取到的数据是否正常,而且最后一页内容是没有下一页的。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • xiaoyuan1 提问者 #1
    回复里面没法截图,我在上面直接回答了
    2020-04-05 17:25:30
提问者 xiaoyuan1 2020-04-14 11:02:55

老师,您看这样行不,没有下一页了,就直接pass掉了,可以吗

http://img1.sycdn.imooc.com//climg/5e9527dd09703c5017300659.jpg

  • 同学,你好。使用pass是可以的,祝学习愉快~~~~
    2020-04-14 16:06:09
提问者 xiaoyuan1 2020-04-05 17:25:00

老师,我知道这个报错是什么意思,但是我不知道咋改。

您说的最后一页是没有下一页的,是呀,咱们在最开始的if语句中不是已经判断了吗?

图中标的1那,如果只写value = value_search.findall(response.url)[0]会报那个下标越界的错误

图中标的2那,如果按2那么写,如果报错了那么下面response.request.meta['task_url'] = 'https://www.guazi.com/%s/%s/o%si7' % (value[0], value[1], str(int(value[2]+1)))这里就取不到value值了

http://img1.sycdn.imooc.com//climg/5e89a34e09f0d61a14900672.jpg

  • 最后一页的判断逻辑已经在if语句中进行了判断,该代码逻辑是用来实现对下一页数据的抓取,那么当无法取值时,说明已经取到所有的页面,此外按照图中标2的方式实现可采用try ··except··finally的结构进行尝试。(注意:该代码逻辑必须处于与上面的for循环同一个代码层次)。
    2020-04-07 14:00:52
  • 提问者 xiaoyuan1 回复 慕之熠_灿烈 #2
    老师,这段代码是和上面的for循环是处于同一个代码层次的。 老师您说的可采用try ··except··finally的结构实现,finally不管上面怎么样都会执行下面的代码,如果没有下一页,那么value = value_search.findall(response.url)[0]没有值,finally最后都执行的代码,写什么呢
    2020-04-13 20:35:19
  • 时间, 回复 提问者 xiaoyuan1 #3
    同学,你好。同学可以将response和yield语句放在finally语句中,或者直接使用try……except……就可以。祝学习愉快~~~~
    2020-04-14 09:53:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
4.入门主流框架Scrapy与爬虫项目实战
  • 参与学习           人
  • 提交作业       107    份
  • 解答问题       1672    个

Python最广为人知的应用就是爬虫了,有趣且酷的爬虫技能并没有那么遥远,本阶段带你学会利用主流Scrapy框架完成爬取招聘网站和二手车网站的项目实战。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师