【python2.7】使用urllib2爬取cnki

  • 第一次请求提交搜索关键字,但是并不返回结果
  • 第二次请求返回真正的搜索结果
  • 由于是学校内网测试,所以不需要登陆,知网应该是根据学校IP,默认已经登陆
# -*- coding: utf-8 -*-
import time
import urllib
import urllib2
import cookielib


# 构建第一次请求时使用的URL
url = 'http://kns.cnki.net/kns/request/SearchHandler.ashx?action=&NaviCode=*&'
parameter={'ua':'1.11'}
parameter['formDefaultResult']=''
parameter['PageName']='ASP.brief_default_result_aspx'
parameter['DbPrefix']='SCDB'
parameter['DbCatalog']='中国学术文献网络出版总库'
parameter['ConfigFile']='SCDBINDEX.xml'
parameter['db_opt']='CJFQ'
parameter['db_opt']='CJFQ,CJRF,CDFD,CMFD,CPFD,IPFD,CCND,CCJD'
parameter['txt_1_sel']='SU$%=|'
parameter['txt_1_value1']='爬虫'
parameter['txt_1_special1']='%'
parameter['his']='0'
parameter['parentdb']='SCDB'
parameter['__']='Sun Nov 05 2017 20:09:05 GMT+0800 (中国标准时间) HTTP/1.1'
times = time.strftime('%a %b %d %Y %H:%M:%S')+' GMT+0800 (中国标准时间)'
parameter['__']=times

getdata = urllib.urlencode(parameter)

headers = {'Connection': 'Keep-Alive','Accept': 'text/html,*/*','User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36'}
headers['Referer']='http://kns.cnki.net/kns/brief/default_result.aspx'
req = urllib2.Request(url + getdata, headers=headers)

# 创建cookieJar对象,以保存cookie
cookie = cookielib.CookieJar()
# 通过opener.open()方法的访问请求都将带cookie
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie), urllib2.HTTPHandler)
html = opener.open(req).read()

with open('C:/code/test3/web1.html', 'w') as e:
    e.write(html)

# 构建第二次请求时使用的URL
query_string = urllib.urlencode({'pagename': 'ASP.brief_default_result_aspx','dbPrefix':'SCDB', 'dbCatalog': '中国学术文献网络出版总库',
                                 'ConfigFile': 'SCDBINDEX.xml', 'research':'off', 't': int(time.time()), 'keyValue': '爬虫', 'S': '1'})

url2 = 'http://kns.cnki.net/kns/brief/brief.aspx'
req2 = urllib2.Request(url2 + '?' + query_string, headers=headers)
result2 = opener.open(req2)
html2 = result2.read()
with open('C:/code/test3/web2.html', 'w') as e:
    e.write(html2)

xpath如何取出被标签包含的文字内容?
http://blog.csdn.net/jiangchao858/article/details/63314426
http://blog.csdn.net/xm_csdn/article/details/52291995

你可能感兴趣的:(【python2.7】使用urllib2爬取cnki)