|
楼主 |
发表于 2017-11-14 21:29:24
|
显示全部楼层
你好,我又遇到一些问题,求指导
当我运行下列代码- import requests
- from bs4 import BeautifulSoup
- from datetime import datetime
- import pandas
- import re
- data=[]
- for k in range(1,33):
-
- date=[]
- media=[]
- title=[]
- link=[]
- newsurl='http://news.baidu.com/ns?word=深康佳,康佳集团股份有限公司,康佳集团&pn=%s&cl=2&ct=1&tn=newsdy&rn=20&ie=utf-8&bt=1293811200&et=1451577599'%((k-1)*20)
- kv={"User-Agent":"Mozilla/5.0 "}
- res=requests.get(newsurl,headers=kv)
- res.encoding='utf-8'
- soup=BeautifulSoup(res.text,'html.parser')
- for i in range(20):
- news=soup.find_all( 'div', { 'class', 'result'})[i]
-
- h3=news.find( name= "a", attrs={ "target": re.compile( "_blank")})#取出每则新闻的标题
- title.append(h3.text)
-
- m=news.find( name= "p", attrs={ "class": re.compile( "c-author")})#取出每则新闻的发布媒体
- m1=m.text.split()[0]
- media.append(m1)
-
- t=m.text.split()[1]#取出每则新闻的发布时间
- dt=datetime.strptime(t,'%Y年%m月%d日')
- d=dt.strftime('%Y-%m-%d')
- date.append(d)
-
- href=news.h3.a['href']
- link.append(href)
-
- data.append((date[i], title[i], media[i],link[i]))
- print("第" + str(k) + "页完成")
-
- df=pandas.DataFrame(data)
- df.to_excel('000016深康佳.xlsx')
复制代码
最后总是抓取到第22页,就不往下抓取了,提示:
news=soup.find_all( 'div', { 'class', 'result'})
IndexError: list index out of range
然后我猜想23页有问题,检查元素,也没发现特别之处。就用下列代码单独抓取23页
- import requests
- from bs4 import BeautifulSoup
- from datetime import datetime
- import pandas
- import re
- data=[]
- date=[]
- media=[]
- title=[]
- link=[]
- newsurl='http://news.baidu.com/ns?word=深康佳A,康佳集团股份有限公司,康佳集团&pn=440&cl=2&ct=1&tn=newsdy&rn=20&ie=utf-8&bt=1293811200&et=1451577599'
-
- kv={"User-Agent":"Mozilla/5.0 "}
- res=requests.get(newsurl,headers=kv)
- res.encoding='utf-8'
- soup=BeautifulSoup(res.text,'html.parser')
- for i in range(14):
- news=soup.find_all( 'div', { 'class', 'result'})[i]
-
- h3=news.find( name= "a", attrs={ "target": re.compile( "_blank")})#取出每则新闻的标题
- title.append(h3.text)
-
- m=news.find( name= "p", attrs={ "class": re.compile( "c-author")})#取出每则新闻的发布媒体
- m1=m.text.split()[0]
- media.append(m1)
-
- t=m.text.split()[1]#取出每则新闻的发布时间
- dt=datetime.strptime(t,'%Y年%m月%d日')
- d=dt.strftime('%Y-%m-%d')
- date.append(d)
-
- href=news.h3.a['href']
- link.append(href)
-
- data.append((date[i], title[i], media[i],link[i]))
-
- df=pandas.DataFrame(data)
- df.to_excel('000016(23).xlsx')
复制代码
但是抓取不全,20条新闻,只抓取了14条。
求大神帮忙答疑解惑。 |
|