91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .py
    金幣: 1
    下載: 1 次
    發布日期: 2021-06-07
  • 語言: Python
  • 標簽: 爬蟲??python??

資源簡介

這是一個爬取知網的社科基金項目的代碼,用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??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]*?)
‘?r.text)
????print(re.findall(“\d+“?countHtml[0]))
????countItem?=?int(re.findall(“\d+“?countHtml[0]))
????#這里開始抓列表里每一個文獻的url
????#soup?=?re.findall(r‘‘?r.text)
????soup?=?re.findall(r‘<

評論

共有 條評論