老师,运行京东网的爬虫出现错误
来源: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回答
-
你这是两个问题,首先,爬取不到数据,是因为京东网站做了调整,添加了反扒机制。这些网站会更新,会导致我们的爬虫程序也要不断的调整。在请求中添加请求头就可以爬去啦。
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 '无')
152019-05-04
相似问题