sinat_38149664 2017-03-31 18:46 采纳率: 0%
浏览 3057
已结题

Python爬虫结果为空TT

新手修改了网上代码,想要爬百度新闻的标题和简介,不知道为什么运行结果是空。在mac自带的python2上运行:

 from urllib import urlopen
import csv
import re
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
for k in range(1,36):
    url = "http://news.baidu.com/ns?word=低保&pn=%s&cl=2&ct=1&tn=news&rn=20&ie=utf-8&bt=0&et=0"% ((k-1)*20) 
    csvfile = file("Dibao.csv", "ab+")
    writer = csv.writer(csvfile)
    content = urlopen(url).read()
    soup = BeautifulSoup(content,"lxml")
    list0 = []
    list1 = []
    list2 = []
    list3 = []
    for i in range(1,20):
        hotNews = soup.find_all("div", {"class", "result"})[i]
        a1=hotNews.find(name="a", attrs={"target": re.compile("_blank")})
        list0.append(a1.text)
        a2=hotNews.find(name="p", attrs={"class": re.compile("c-author")})
        t1=a2.text.split()[0]
        list1.append(t1)
        t2 = a2.text.split()[1]
        list2.append(t2)
        if t2.find(u"年") == 4:
            t3 = a2.text.split()[2]
            list3.append(t3)
        else:
            list3.append(" ")
    #将数据写入csv
    data = []
    for i in range(0,20):
        data.append((list0[i], list1[i], list2[i],list3[i]))
    writer.writerows(data)
    csvfile.close()
    print "第" + str(k) + "页完成"

报错:
Traceback (most recent call last):
File "", line 12, in
IndexError: list index out of range

不懂参数过范围什么意思,新闻一共37页,每页20条。

希望有大神能帮忙看一下,多谢啦~

  • 写回答

1条回答 默认 最新

  • oyljerry 2017-04-01 01:33
    关注

    你需要先确认hotNews = soup.find_all("div", {"class", "result"})[i]
    这里能够找到这么多元素,如果没有那么多就会出现越界错误

    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 flask项目,怎么使用AJAX传数据库数据到echarts图表的data里,实现异步加载数据。
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题