CSDN爬取详情页的时候,多页的话,没办法取到topic_id
来源:8-7 使用多线程和Queue重构csdn爬虫

weixin_慕盖茨9032018
2019-08-05
报错信息:
ValueError: invalid literal for int() with base 10: '392275173?page=2’
我感觉是在详情页那里解析topic_id出错了,然后在原文那里我改了下
if “?page” not in url:
topic_id =int(re.split("/|?", url)[-2])
else:
topic_id = url.split("/")[-1]
但是运行的话还是不行,还是报错
ValueError: invalid literal for int() with base 10: ‘topics’
写回答
2回答
-
不肖生
2019-09-18
re.split('/|?',url)
这里正则表达式错了,你忘了在正则里面,?问号表示匹配前一个字符0次或者1次吗。这里可以在问号前加一个转义符 \,就可以了。
re.split('/|\?',url)
另外,这里的topic_id,我觉得不用这样,完全可以给函数parse_topic(url)多加一个参数,
parse_topic(url,topic_id)
在传递url的时候,同时传递进去topic_id。
00 -
bobby
2019-08-06
你在这两处打个断点看看应该是某个url情况比较特殊 导致你这里的处理方法有问题 最好是在把这两个方法用try包起来 然后你把断点打在except中,不然的话 你可能会debug很多次才能遇到错误的
00
相似问题