(python)知网文章列表爬虫,没有此用户_其他语言_编程问答 问题: (python)知网文章列表爬虫,没有此用户
描述:

import requests
import time
from urllib.parse import urlencode
url='http://nvsm.cnki.net/kns/brief/brief.aspx?'
parameter={
    "pagename":"ASP.brief_default_result_aspx",
    "isinEn":"1",
    "dbPrefix":"SCDB",
    "dbCatalog":"中国学术文献网络出版总库",
    "ConfigFile":"SCDBINDEX.xml",
    "research":"off",
    "t":int(time.time()),
    "keyValue":"氯化1_甲基_3_丁基咪唑的制备与表征",
    "S":"1",
    "sorttype":"(FFD,'RANK') desc",
}
headers={
    "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Encoding":"gzip, deflate, sdch",
    "Accept-Language":"zh-CN,zh;q=0.8",
    "Connection":"keep-alive",
    # "Cookie":'ASP.NET_Sessi SID_kns=011101; SID=011101; KNS_SortType=SCDB%21%28FFD%252c%2527RANK%2527%29+desc;',
    "Host":"nvsm.cnki.net",
    "Referer":"http://nvsm.cnki.net/kns/brief/default_result.aspx",
    "Upgrade-Insecure-Requests":"1",
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}
s=requests.Session()
aa=s.get('http://nvsm.cnki.net/kns/brief/default_result.aspx',headers=headers)
print(aa.cookies.keys())
search=s.get(url+urlencode(parameter),headers=headers)
print(search.text.find('沈阳'))

我把电脑浏览器里面的cookie放到headers里面,就可以获得结果,主要需要ASP.NET_Sessi SID_kns=011101。把headers里面的cookie注释了,然后用requests.session访问,通过打印cookie发现ASP.NET_SessionId是有的,但是返回的页面结果是没有此用户什么的,除了手动复制cookie,有什么办法能用request获取结果呢


解决方案1:

python不熟,难道urllib不能自己维护cookie吗?这应该是http库的基本功能之一,你文档里找找吧

解决方案2:

用session访问http://nvsm.cnki.net/kns/requ...
而不是http://nvsm.cnki.net/kns/brie...
就可以了
关于session的情况可以参考一下楼下朋友说的,很透彻

上一篇(python)手游分区和不分区那个成本高
下一篇如何用python模拟豆瓣发帖?
明星图片
相关文章
《 (python)知网文章列表爬虫,没有此用户》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)