首页 > 其他 > 详细

新浪新闻按关键字抓取实例

时间:2014-10-10 19:12:15      阅读:210      评论:0      收藏:0      [点我收藏+]
import urllib2
import requests
#import MySQLdb
import webbrowser
import string
import re
from BeautifulSoup import BeautifulSoup
def getHtml(page):#获取网址内容
    page=str(page)
    html=requests.get("http://search.sina.com.cn/?q=%BD%F0%D0%E3%CF%CD&range=all&c=news&sort=time&page="+page).text
    return html
def getPage():#获得网页总数
    html=requests.get("http://search.sina.com.cn/?range=all&c=news&q=%BD%F0%D0%E3%CF%CD&from=home").text   #网址
    soup=BeautifulSoup(‘‘.join(html))
    a=soup(‘div‘,{ ‘class‘ : ‘l_v2‘ })
    race=[]
    c=""
    race=str(a).split("新闻")[1].split("篇")[0].split(",")   #获取网址有多少页码
    b=len(race)
    for i in range(b):
        c+=race[i]
    b=string.atoi(c)/20
    return b
def getContents(html):#获取指定新闻内容
    soup=BeautifulSoup(‘‘.join(html))
    rs=re.compile("fgray_time")
    html=soup.findAll(‘span‘,attrs={‘class‘:rs})
    rs=re.compile("box-result clearfix")
    contents=soup.findAll(‘div‘,attrs={‘class‘:rs})
    for c in html:
        length=len(c.text.split(‘ ‘))
        if length==3:
                   source=c.text.split(‘ ‘)[0]#新闻来源
                   time=c.text.split(‘ ‘)[1]+‘ ‘+c.text.split(‘ ‘)[2]#新闻发表时间
                   print source
                   print time
        else:
                   time=c.text#新闻发表时间
                   source=‘‘#新闻来源
                   print time


    for i in contents:
        title= i.h2.a.text#新闻标题
        content= i.p.text#新闻简介内容
##    print html
if __name__=="__main__":
    count=getPage()
    print 111
    for i in range(count):
        print getContents(getHtml(i))
    print 222
    

新浪新闻按关键字抓取实例

原文:http://blog.csdn.net/pandana/article/details/39965107

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!