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。

0
0

bobby

2019-08-06

//img.mukewang.com/szimg/5d491a3a09bdb85108870227.jpg 你在这两处打个断点看看应该是某个url情况比较特殊 导致你这里的处理方法有问题 最好是在把这两个方法用try包起来 然后你把断点打在except中,不然的话 你可能会debug很多次才能遇到错误的

0
0

Python爬虫工程师实战 大数据时代必备

慕课网严选精品教程,高质量内容+服务!

2378 学习 · 1158 问题

查看课程