python爬取知網論文關鍵詞_Python爬蟲根據關鍵詞爬取知網論文摘要并保存到數據庫中...

由于實驗室需要一些語料做研究,語料要求是知網上的論文摘要,但是目前最新版的知網爬起來有些麻煩,所以我利用的是知網的另外一個搜索接口

搜索出來的結果和知網上的結果幾乎一樣

在這個基礎上,我簡單看了些網頁的結構,很容易就能寫出爬取得代碼(是最基礎的,相當不完善,增加其他功能可自行增加)

20190623144031462.png

網頁的結構還是很清晰的

20190623144100476.png

摘要信息也很清晰

我使用的是 pymysql 連接的數據庫,效率也還可以

下面直接貼代碼:

# -*- coding: utf-8 -*-

import time

import re

import random

import requests

from bs4 import BeautifulSoup

import pymysql

connection = pymysql.connect(host='',

user='',

password='',

db='',

port=3306,

charset='utf8') # 注意是utf8不是utf-8

# 獲取游標

cursor = connection.cursor()

#url = 'http://epub.cnki.net/grid2008/brief/detailj.aspx?filename=RLGY201806014&dbname=CJFDLAST2018'

#這個headers信息必須包含,否則該網站會將你的請求重定向到其它頁面

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',

'Host':'www.cnki.net',

'Referer':'http://search.cnki.net/search.aspx?q=%E4%BD%9C%E8%80%85%E5%8D%95%E4%BD%8D%3a%E6%AD%A6%E6%B1%89%E5%A4%A7%E5%AD%A6&rank=relevant&cluster=zyk&val=CDFDTOTAL',

'Upgrade-Insecure-Requests':'1',

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'

}

headers1 = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'

}

def get_url_list(start_url):

depth = 20

url_list = []

for i in range(depth):

try:

url = start_url + "&p=" + str(i * 15)

search = requests.get(url.replace('\n', ''), headers=headers1)

soup = BeautifulSoup(search.text, 'html.parser')

for art in soup.find_all('div', class_='wz_tab'):

print(art.find('a')['href'])

if art.find('a')['href'] not in url_list:

url_list.append(art.find('a')['href'])

print("爬取第" + str(i) + "頁成功!")

time.sleep(random.randint(1, 3))

except:

print("爬取第" + str(i) + "頁失敗!")

return url_list

def get_data(url_list, wordType):

try:

# 通過url_results.txt讀取鏈接進行訪問

for url in url_list:

i = 1;

if url == pymysql.NULL or url == '':

continue

try:

html = requests.get(url.replace('\n', ''), headers=headers)

soup = BeautifulSoup(html.text, 'html.parser')

except:

print("獲取網頁失敗")

try:

print(url)

if soup is None:

continue

# 獲取標題

title = soup.find('title').get_text().split('-')[0]

# 獲取作者

author = ''

for a in soup.find('div', class_='summary pad10').find('p').find_all('a', class_='KnowledgeNetLink'):

author += (a.get_text() + ' ')

# 獲取摘要

abstract = soup.find('span', id='ChDivSummary').get_text()

# 獲取關鍵詞,存在沒有關鍵詞的情況

except:

print("部分獲取失敗")

pass

try:

key = ''

for k in soup.find('span', id='ChDivKeyWord').find_all('a', class_='KnowledgeNetLink'):

key += (k.get_text() + ' ')

except:

pass

print("第" + str(i) + "個url")

print("【Title】:" + title)

print("【author】:" + author)

print("【abstract】:" + abstract)

print("【key】:" + key)

# 執行SQL語句

cursor.execute('INSERT INTO cnki VALUES (NULL, %s, %s, %s, %s, %s)', (wordType, title, author, abstract, key))

# 提交到數據庫執行

connection.commit()

print()

print("爬取完畢")

finally:

print()

if __name__ == '__main__':

try:

for wordType in {"大腸桿菌", "菌群總落", "胭脂紅", "日落黃"}:

wordType = "肉+" + wordType

start_url = "http://search.cnki.net/search.aspx?q=%s&rank=relevant&cluster=zyk&val=" % wordType

url_list = get_url_list(start_url)

print("開始爬取")

get_data(url_list, wordType)

print("一種類型爬取完畢")

print("全部爬取完畢")

finally:

connection.close()1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

在這里的關鍵詞我簡單的選了幾個,作為實驗,如果爬取的很多,可以寫在txt文件里,直接讀取就可以,非常方便。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539163.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539163.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539163.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網頁中查看pdf文檔

2019獨角獸企業重金招聘Python工程師標準>>> 介紹&#xff1a; PDFObject 是一個 JavaScript 庫&#xff0c;用來在HTML中動態嵌入 PDF 文檔。 實現代碼&#xff1a; <script type"text/javascript" src"pdfobject.js"></script>…

導入導出數據

導入數據 從文件中裝載數據 hive>LOAD DATA [LOCAL] INPATH ... [OVERWRITE] INTO TABLE t2 [PARTITION (provincebeijing)]; LOCAL&#xff1a;linux本地的文件。無LOCAL&#xff1a;是hdfs的文件 注意&#xff1a; 從本地文件系統中將數據導入到Hive表的過程中&#xf…

python opencv 讀取視頻流不解碼_python + opencv: 解決不能讀取視頻的問題

博主一開始使用python2.7和Opencv2.4.10來獲取攝像頭圖像&#xff0c;程序如下&#xff1a; cap cv2.VideoCapture(0) ret, frame cap.read()使用這個程序能夠打開攝像頭并獲取圖像&#xff0c;一切正常。 接著想使用OpenCv播放視頻&#xff0c;按照官方教程只要將VideoCaptu…

jmeter提取mysql返回值_jmeter連接數據庫和提取數據庫返回值

一、在MySQL命令行中&#xff0c;驗證MySQL是否能正常登陸。若不能登陸&#xff0c;則重置MySQL的密碼。二、下載mysql-connector-java-5.1.45-bin.jar&#xff0c;將其放入Jmeter安裝目錄的lib目錄下。完成MySQL數據庫的驅動。三、右鍵“線程組”->“配置元件”->“JDBC…

[轉] Lodash

與underscore 類似 &#xff0c; 是1個js庫&#xff0c;內部封裝了諸多對字符串、數組、對象等常見數據類型的處理函數。 模塊組成 Lodash 提供的輔助函數主要分為以下幾類&#xff0c;函數列表和用法實例請查看 Lodash 的官方文檔&#xff1a; Array&#xff0c;適用于數組類型…

讀模式與寫模式

RDBMS是寫模式 Hive是讀模式 我們傳統的關系型數據庫RDBMS是寫模式。在RDBMS里&#xff0c;我們對表進行數據操作時候&#xff0c;RDBMS會用數據庫的第一第二第三范式去檢查數據的規范性&#xff0c;如果不符合規范&#xff0c;數據庫就拒絕數據的加載和操作。這個驗證過程消耗…

用python畫雨滴_Python編程從入門到實踐練習(雨滴)

雨滴&#xff1a;尋找一幅雨滴圖像&#xff0c;并創建一系列整齊排列的雨滴。讓這些雨滴往下落&#xff0c;直到到達屏幕后消失。 先說今天的問題&#xff1a; 1.在更改函數形參時&#xff0c;調用的時候也要修改&#xff0c;否則會出現AttributeError 值得注意的是&#xff1a…

python你是否也走進了這個誤區了_Python是不是被嚴重高估了?

是python被曲解了python有非常強的局限性&#xff0c;那就是只適合在io和網絡或其他整合組件上耗費大量時間的快速迭代跨平臺需求&#xff0c;比如爬蟲和下載快速迭代才能顯示出python作為腳本語言不用編譯的優勢&#xff0c;而io和網絡的大量時間消耗才能掩蓋python本身糟糕透…

Hive文件格式

Hive有四種文件格式&#xff1a;TextFile&#xff0c;SequenceFile&#xff0c;RCFile&#xff0c;ORC TextFile 默認的格式&#xff0c;文本格式。 SequenceFile 簡介 見&#xff1a;http://blog.csdn.net/zengmingen/article/details/52242768 操作 hive (zmgdb)>cre…

learnpythonthehardway下載_Python【十一】:階段小結

今天來將前一段時間學習的Python的知識系統地梳理一遍&#xff0c;接下來開始實際的編程實踐了。 一、Python實驗環境搭建 使用Python編程&#xff0c;首先要有一個開發環境&#xff0c;如同C/C上又VS2008家族一樣&#xff0c;Linux/MacOS上的部署情況這里不再詳述&#xff0c;…

python使用ssh 中文_Python3制作簡易SSH登錄工具

下載W3Cschool手機App&#xff0c;0基礎隨時隨地學編程>>戳此了解導語做這個的起因大概是&#xff1a;電腦里的Xshell不知道為啥突然顯示“評估期已過”之類的提示。。。記得之前認證學校郵箱后是可以免費使用的。。。蒼天繞過誰。。。想起上次認證學校郵箱過了N個小時才…

hive java導入CVS

原文&#xff1a;http://bbs.chinahadoop.cn/thread-5343-1-1.html ---------------------------------------------------------------------------------- 本文的目的是hive讀取cvs文件&#xff0c;忽略字段中‘\,’&#xff0c;最終還是以,來分割文本 cvs格式是以逗號,隔開…

Django 博客教程(三):創建應用和編寫數據庫模型

創建 django 博客應用 在上一章節中我們創建了 django 博客的工程&#xff0c;并且成功地運行了它。然而這一切都是 django 為我們創建的項目初始內容&#xff0c;django 不可能為我們初始化生成我們需要的博客代碼&#xff0c;這些功能性代碼都得由我們自己編寫。 django 鼓勵…

python將16進制字符串轉換為整數_Python 16進制與字符串的轉換

電腦上裝了Python2.7和3.3兩個版本&#xff0c;平時運行程序包括在Eclipse里面調試都會使用2.7&#xff0c;但是由于某些原因在cmd命令行中輸入python得到的解釋器則是3.3, 一直沒對此做處理&#xff0c;因為這樣可以對兩個版本的差異有一個測試&#xff0c;而且虛擬機里面是2.…

python多個文件打包成exe_多個py文件生成一個可運行exe文件

一、概述 目前有一個python腳本,需要在別的電腦中運行,安裝python環境太麻煩,封裝成exe文件,運行比較方便。 二、演示 環境說明 python版本:3.7.9 操作系統:windows 10 安裝模塊 pip3 installer pyinstaller 封裝 新建目錄test,目錄結構如下: ./├── conf.py └── …

CSV文件的轉義處理

原文&#xff1a;http://blog.csdn.net/maqingli20/article/details/7095132 ------------------------------------------------------------------------------------ CSV文件是一種適合程序格式化輸出數據的文件格式。它使用英文逗號作為列分隔符&#xff0c;文件可以直接用…

華為讀取版本exe_關于esrv_svc.exe和SurSvc.exe疑似泄露用戶信息的猜測

封面圖片來源&#xff1a;https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉&#xff0c;寫網頁文章的次數不多&#xff0c;排版沒研究過&#xff0c;請原諒。下面是正題&#xff1a;由來&#xff1a;最初是借由火絨的自定義防護規則&#xff0c;…

gitlab ci mysql_php-Gitlab CI:在階段之間保留MySQL數據

根據Gitlab問題頁面&#xff1a;Share service between build stages.Gitlab-CI的設置方式如下&#xff1a;each job is run in each job is run independently of the others,including potentially running on different machines. And the servicesare run locally on each …

flask 部署_只需10分鐘!就能用Flask,Docker和Jenkins部署機器學習模型

摘要&#xff1a; 一杯茶的功夫部署完成機器學習模型&#xff01;在生產環境中部署機器學習模型是數據工程中經常被忽視的領域。網上的大多數教程/博客都側重于構建、訓練和調整機器學習模型。如果它不能用于實際的預測&#xff0c;那么它又有什么用呢&#xff1f; 接下來了解一…