資源簡介
這是一個爬取知網的社科基金項目的代碼,用python語言寫的,這個代碼參考了其他人寫的代碼。最終能夠實現爬取社科基金項目信息的功能,在pycharm3.6下開發,需要替換成你自己的瀏覽器的cookie。
代碼片段和文件信息
#web_url?=?‘http://kns.cnki.net/kns/detail/detail.aspx?QueryID=0&CurRec=2&DbCode=?CJFD&dbname=CJFDTEMP&filename=BJZY201812008&urlid=&yx=‘
import?requests??#?導入requests?模塊
import?re
import?time
import?xlwt?#導入模塊
def?request(url):??#?返回網頁的response
????#?print(url)
????#?這里是偽造瀏覽器信息,和偽造來源
????user_agent?=?‘Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML?like?Gecko)?Ch‘?\
?????????????????‘rome/58.0.3029.81?Safari/537.36‘
????referer?=?“http://kns.cnki.net/kns/brief/result.aspx?dbprefix=CJFQ“
????#?這里是偽造cookie,你要從瀏覽器里復制出來,粘貼在這里
????#?可以把里面的時間不斷更新,這樣能爬久一點
????cookie?=?‘RsPerPage=20;?cnkiUserKey=9fc101c4-bc14-27ea-5eb4-f8282ca1742c;?UM_distinctid=16527e5f405230-044bded10d4527-4947311e-1fa400-16527e5f4069ff;?Ecp_ClientId=5180811152900249267;?ASP.NET_SessionId=hbqqazmw3um3z1onutsbxb0d;?SID_kns=011116;?SID=011108;?Ecp_session=1;?LID=WEEvREcwSlJHSldRa1FhcEE0RVVzNVhyZTRSWTFraVRHOTdsUDN0bU9NWT0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!;?_pk_ref=%5B%22%22%2C%22%22%2C1545744171%2C%22http%3A%2F%2Fwww.cnki.net%2F%22%5D;?KNS_SortType=;?_pk_ses=*‘
????headers?=?{‘User-Agent‘:?user_agent
???????????????“Referer“:?referer
???????????????“cookie“:?cookie}
????r?=?requests.get(url?headers=headers?timeout=30)
????return?r
wb?=?xlwt.Workbook()
sh?=?wb.add_sheet(“2003測試表“)
sh.write(0?0?‘序號‘)
sh.write(0?1?‘題名‘)
sh.write(0?2?‘作者‘)
sh.write(0?3?‘單位‘)
sh.write(0?4?‘文獻來源‘)
sh.write(0?5?‘關鍵詞‘)
sh.write(0?6?‘摘要‘)
sh.write(0?7?‘年份‘)
sh.write(0?8?‘頁碼‘)
countItem?=?1
told?=?0
p?=?1??#?這里是頁數
for?num?in?range(p?p?+?20):
????#?這里的num是頁碼
????web_url?=?‘http://nvsm.cnki.net/kns/brief/brief.aspx?curpage=%s&Records‘?\
????????????‘PerPage=20&QueryID=0&ID=&turnpage=1&tpagemode=L&dbPref‘?\
????????????‘ix=CJFQ&Fields=&DisplayMode=listmode&PageName=ASP.brief_‘?\
????????????‘result_aspx&isinEn=1‘?%?num??#?這里的URL實現了二次加載
????print(‘搜素頁的URL=‘?web_url)
????#?這里開始是時間控制
????t?=?int(time.clock())
????print(t?/?60?‘分鐘‘)
????useTime?=?t?-?told
????#?如果一個周期的時間使用太短,則等待一段時間
????#?主要用于防止被禁
????if?(useTime?120?and?useTime?>?10):
????????print(“useTime=%s“?%?useTime)
????????whiteTime?=?120?-?useTime
????????print(“等待%s秒“?%?whiteTime)
????????time.sleep(whiteTime)
????told?=?int(time.clock())
????print(t)
????print(‘開始網頁get請求‘)
????r?=?request(web_url)??#
????#print(r.text)
????#?這里是報錯的解釋,能知道到底是因為什么不能繼續爬了
????#?一開始會看爬到的源代碼,但是之后正式開始爬的時候,打印頁面源代碼會拉低爬蟲效率
????yan?=?re.search(r‘參數錯誤‘?r.text)
????if?yan?!=?None:
????????print(“參數“)
????????break
????yan?=?re.search(r‘驗證碼‘?r.text)
????if?yan?!=?None:
????????print(“驗證“)
????????break
????countHtml?=?re.findall(r‘tle“?name=“lbPagertitle“?class=“pagertitle“> ([.$\s\S]*?)
????print(re.findall(“\d+“?countHtml[0]))
????countItem?=?int(re.findall(“\d+“?countHtml[0]))
????#這里開始抓列表里每一個文獻的url
????#soup?=?re.findall(r‘
????soup?=?re.findall(r‘<
評論
共有 條評論
相關資源
- 二級考試python試題12套(包括選擇題和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安裝包 P
- 英文原版-Scientific Computing with Python
- 7.圖像風格遷移 基于深度學習 pyt
- 基于Python的學生管理系統
- A Byte of Python(簡明Python教程)(第
- Python實例174946
- Python 人臉識別
- Python 人事管理系統
- 一個多線程智能爬蟲,爬取網站小說
- 基于python-flask的個人博客系統
- 計算機視覺應用開發流程
- python 調用sftp斷點續傳文件
- python socket游戲
- 基于Python爬蟲爬取天氣預報信息
- python函數編程和講解
- 頂點小說單本書爬蟲.py
- Python開發的個人博客
- 基于python的三層神經網絡模型搭建
- python實現自動操作windows應用
- python人臉識別(opencv)
- python 繪圖(方形、線條、圓形)
- python疫情卡UN管控
- python 連連看小游戲源碼
- 基于PyQt5的視頻播放器設計
- 一個簡單的python爬蟲
- csv文件行列轉換python實現代碼
- Python操作Mysql教程手冊