知网的爬取 很简单

对于知网能爬出来的东西 首先说一下 论文的题目 时间 作者 摘要等信息 本文主要对搜索界面进行爬取

对于知网的爬虫可以说挺简单的,其难点在于有一个二次请求 

通过断点分析youfiddler分析有两个要注意的url一个是红色的一个是橘色的,先通过橘色请求得到一个数据然后在通过红色请求的得到页面信息这样就完了 还有一点要注意的 cookie问题

网上的大神说知网跟踪用户的cookie所以请求的时候一定注意要加入cookie

 

import requests
from bs4 import BeautifulSoup
import time

firsturl="http://kns.cnki.net/kns/request/SearchHandler.ashx"

wantsearch=input()
def ToUtf(string):
    return string.encode('utf8')

times = time.strftime('%a %b %d %Y %H:%M:%S') + ' GMT+0800 (中国标准时间)'
headers2={'action':	'',
'ua':	'1.11',
'isinEn':	'1',
'PageName'	:'ASP.brief_default_result_aspx',
'DbPrefix'	:'SCDB',
'DbCatalog'	:'中国学术文献网络出版总库',
'ConfigFile'	:'SCDBINDEX.xml',
'db_opt'	:'CJFQ,CDFD,CMFD,CPFD,IPFD,CCND,CCJD',
'txt_1_sel'	:'SU$%=|',
'txt_1_value1'	:wantsearch,
'txt_1_special1'	:'%',
'his'	:'0',
'parentdb'	:'SCDB',
'__':times }
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',
                 'Referer':"http://kns.cnki.net/kns/brief/default_result.aspx",
'Cookie':'Ecp_ClientId=5190502112900625483; Ecp_IpLoginFail=190502223.99.218.244; RsPerPage=20; cnkiUserKey=4bdba1f3-39f5-cd9f-7c1a-14309a1a6120; ASP.NET_SessionId=vydvcldogtjjv1ptz2ea5iym; SID_kns=123113; SID_klogin=125144; Hm_lvt_bfc6c23974fbad0bbfed25f88a973fb0=1556767932,1556851125; Hm_lpvt_bfc6c23974fbad0bbfed25f88a973fb0=1556851125; KNS_SortType=; SID_crrs=125133; _pk_ref=%5B%22%22%2C%22%22%2C1556851140%2C%22http%3A%2F%2Fwww.cnki.net%2F%22%5D; _pk_ses=*; SID_krsnew=125133',
}
header={'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',
        'Referer':"http://kns.cnki.net/kns/brief/default_result.aspx?code=SCDB",
        'Cookie': 'Ecp_ClientId=5190502112900625483; Ecp_IpLoginFail=190502223.99.218.244; RsPerPage=20; cnkiUserKey=4bdba1f3-39f5-cd9f-7c1a-14309a1a6120; ASP.NET_SessionId=vydvcldogtjjv1ptz2ea5iym; SID_kns=123113; SID_klogin=125144; Hm_lvt_bfc6c23974fbad0bbfed25f88a973fb0=1556767932,1556851125; Hm_lpvt_bfc6c23974fbad0bbfed25f88a973fb0=1556851125; KNS_SortType=; SID_crrs=125133; _pk_ref=%5B%22%22%2C%22%22%2C1556851140%2C%22http%3A%2F%2Fwww.cnki.net%2F%22%5D; _pk_ses=*; SID_krsnew=125133',
        }
firstmagess=requests.get(firsturl,headers=headers,data=headers2).text
secondurl="http://kns.cnki.net/kns/brief/brief.aspx?pagename="+str(firstmagess)+"&S=1&sorttype="
thirdurl='http://kns.cnki.net/kns/brief/brief.aspx?curpage=1&RecordsPerPage=20&QueryID=6&ID=&turnpage=1&tpagemode=L&dbPrefix=SCDB&Fields=&DisplayMode=listmode&PageName=ASP.brief_default_result_aspx&isinEn=1&'
secondhtml=requests.get(thirdurl,headers=header).text
print(secondhtml)
secondhtml=BeautifulSoup(secondhtml,"lxml")
html=secondhtml.select("td a[target='_blank']")
for i in html:
    print(i.text)

 

使用Python的requests库爬取中国知网(CNKI)的内容需要特别注意,因为知网通常有反爬机制并且限制了非注册用户的数据访问权限。以下是一个简单的步骤概述: 1. **安装requests库**:首先确保已经安装了`requests`库,如果没有,可以运行 `pip install requests`。 2. **模拟请求头**:知网可能会检查请求头以判断是否是合法的用户访问。你需要设置一些基本的User-Agent,例如浏览器版本,以及可能需要的Cookie,以尽可能地模拟正常浏览器访问。 ```python import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', # 可能需要的Cookie值,具体要看知网的要求 } ``` 3. **处理反爬机制**:知网可能会通过验证码、IP限制等方式阻止直接爬虫。如果遇到这种情况,可能需要使用代理IP、Selenium配合ChromeDriver动态渲染页面获取验证码,或者考虑使用专业的数据抓取工具如Scrapy。 4. **API访问**:若知网提供API服务,可以直接调用API获取数据。然而,大部分学术资源并不开放API,对于论文等详细信息,直接爬取网页内容可能更常见。 5. **遵守规定**:在爬取任何网站时,务必遵守相关法律法规和网站的Robots协议,尊重版权,不要进行大规模、频繁的爬取,以免触发封禁。 由于知网的具体反爬策略可能会改变,以上信息仅供参考,实际操作前应先了解最新的政策和技术限制。同时,很多敏感数据可能无法轻易获取到。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值