从百度新闻爬取关键词搜索的页面

原创 2016年08月30日 06:15:56
#coding=utf-8
from pyquery import PyQuery as pq
import requests
import codecs
import json
import MySQLdb
import sys
import time
reload(sys)
sys.setdefaultencoding('utf-8')
s=requests.Session()
s.headers.update({'referer': "http://news.baidu.com"})
try:
    conn=MySQLdb.connect(host='localhost',user='root',passwd='lbldks03200028',db='baidu',port=3306)
    conn.set_character_set('utf8')
    cur=conn.cursor()
    cur.execute("SET NAMES 'utf8'")
    # cur.execute("drop table records")
    cur.execute("create table records(id int not null auto_increment primary key, title varchar(1023), time varchar(1023), url varchar(1023))")
    # cur.close()
    # conn.close()
except MySQLdb.Error, e:
     print "Mysql Error %d: %s" % (e.args[0], e.args[1])
     exit(0)

# f=codecs.open('/home/allen/projects/sjtu_news/data.csv','w','utf-8')
def indexPage(url,headers):
    r_page=s.get(url, headers=headers)
    page0=pq(r_page.text)
    num=len(page0('.norsSuggest'))
    while num!=0:
        print "sleep for 20s, zzZZ"
        time.sleep(20)
        r_page=s.get(url, headers=headers)
        page0=pq(r_page.text)
        num=len(page0('.norsSuggest'))
    r_page.encoding = 'utf-8'
    page=pq(r_page.text)
    items=page(".result.title")
    for i in range(20):
        item=items.eq(i)
        url=item('h3>a').attr('href')
        url=url.replace("'", "''")
        title=item('h3>a').text()
        title=title.replace("'", "''")
        time=item('.c-title-author').text()
        if time[-2:]==">>":
            time=time[:time.rindex(' ')]
        time=time[-17 : ]
        time=time.replace("'", "''").replace('年', '-').replace('月', '-').replace('日', '')
        sql="insert into records(title, time, url) values('%s', '%s', '%s')" %(title, time, url)
        try:
            cur.execute(sql)
            conn.commit()
        except Exception, e:
            print(e)

        # print url
        # print title
        # print time


headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.5.17 (KHTML, like Gecko) Version/8.0.5 Safari/600.5.17"}

for n in range(200,501,20):
    print "n=", n
    url='http://news.baidu.com/ns?word=title%3A%28%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6%29&pn='+str(n)+'&cl=2&ct=0&tn=newstitle&rn=20&ie=utf-8&bt=0&et=0'
    indexPage(url,headers)
    time.sleep(10)
cur.close()
conn.close()

The following code script deal with requests’s failure for a new page.

r_page=s.get(url, headers=headers)
    page0=pq(r_page.text)
    num=len(page0('.norsSuggest'))
    while num!=0:
        print "sleep for 20s, zzZZ"
        time.sleep(20)
        r_page=s.get(url, headers=headers)
        page0=pq(r_page.text)
        num=len(page0('.norsSuggest'))
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

【爬虫】爬取百度搜索结果页面

今日看了一下爬虫,写了一个爬取百度搜索页面的小程序。可以在代码中改动搜索词,代码如下:#coding=utf-8 #python version:2.7 #author:sharpdeepimport...

新闻api接口 关键字检索最新新闻动态

新闻api接口,通过关键字检索最新新闻动态,包括新闻标题、新闻摘要内容、图片宽度、完整标题、发布时间、新闻来源、图片链接、新闻链接、发布完整时间等等。 接口名称:新闻api接口 接口平台:api接...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

实现新闻搜索功能:用户输入关键字,用来匹配新闻标题或内容。

----------------------------------------------前台部分--------------------------------------------------...

java网络爬虫爬取百度新闻

采用commons-httpclientcommons-httpclient是一个遗留版本,现在官方已经不推荐使用了。lucene采用4.3版本所需jar包650) this.width=650;" ...
  • jethai
  • jethai
  • 2016-08-28 14:10
  • 1329

SearView的使用及对其私有成员mSearchSrcTextView的反射及使用

SearchView继承了LinearLayout,还持有搜索布局中的重要成员,可以通过发射可以得到。因为他没有太多接口提供,比如,无法设置限制字符串长度。 而其中一个成员是SearchAutoCom...

基于HttpClient实现网络爬虫~以百度新闻为例

以百度新闻为例,介绍如何基于HttpClient去采集网络新闻资源信息。

【python网络编程】新浪爬虫:关键词搜索爬取微博数据

上学期参加了一个大数据比赛,需要抓取大量数据,于是我从新浪微博下手,本来准备使用新浪的API的,无奈新浪并没有开放关键字搜索的API,所以只能用爬虫来获取了。幸运的是,新浪提供了一个高级搜索功能,为我...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)