老师,运行京东网的爬虫出现错误

来源:2-9 爬取京东网的数据

慕慕8105830

2019-04-20

我在运行京东网爬虫爬取其他书的信息时,有时会出现下面的错误:图片描述
上网查询后,发现是京东网在title列表中的值是空,因为爬不到东西,所以越界了。
后来我修改了代码,做了一个逻辑运算,当title[0]为空时输出‘无’,有东西时就直接输出,代码如下:
图片描述
可是,结果还是报错:
图片描述
请问老师,我的想法是对的吗?错在哪里了?

老师,我后面发现是京东网的网页源代码有两种,所以有时爬虫运行正常有时又报错:
图片描述
这里class后面的是“p-name”

图片描述
这里class后面又变成了“p-name p-name-type-2”了

怎样做出一个逻辑判断,让在爬取第一个@class="p-name"取不到内容时,自动去爬取@class="p-name p-name-type-2"里面
的内容呢?还是if else判断吗?

写回答

1回答

NavCat

2019-04-20

你这是两个问题,首先,爬取不到数据,是因为京东网站做了调整,添加了反扒机制。这些网站会更新,会导致我们的爬虫程序也要不断的调整。在请求中添加请求头就可以爬去啦。

resp = requests.get(url, headers={
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6776.400 QQBrowser/10.3.2601.400'
    })


第二个问题,你的条件表达式思路错了。IndexError表示小标越界。从你提供截图中,说明title的长度为0,所以title[0]会报错。

所以你的print代码可以调整为:

print(title[0] if title else '无')


1
5
慕慕8105830
非常感谢!
2019-05-04
共5条回复

手把手教你把Python应用到实际开发 不再空谈语法

学会项目开发思路,掌握Python高阶用法。

1341 学习 · 244 问题

查看课程