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.mzph.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>…

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…

用python画雨滴_Python编程从入门到实践练习(雨滴)

雨滴&#xff1a;寻找一幅雨滴图像&#xff0c;并创建一系列整齐排列的雨滴。让这些雨滴往下落&#xff0c;直到到达屏幕后消失。 先说今天的问题&#xff1a; 1.在更改函数形参时&#xff0c;调用的时候也要修改&#xff0c;否则会出现AttributeError 值得注意的是&#xff1a…

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;…

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.…

华为读取版本exe_关于esrv_svc.exe和SurSvc.exe疑似泄露用户信息的猜测

封面图片来源&#xff1a;https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉&#xff0c;写网页文章的次数不多&#xff0c;排版没研究过&#xff0c;请原谅。下面是正题&#xff1a;由来&#xff1a;最初是借由火绒的自定义防护规则&#xff0c;…

flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型

摘要&#xff1a; 一杯茶的功夫部署完成机器学习模型&#xff01;在生产环境中部署机器学习模型是数据工程中经常被忽视的领域。网上的大多数教程/博客都侧重于构建、训练和调整机器学习模型。如果它不能用于实际的预测&#xff0c;那么它又有什么用呢&#xff1f; 接下来了解一…

Hive 导入CSV文件

SerDe 介绍 Hive 使用如下FileFormat 类读写 HDFS files: TextInputFormat/HiveIgnoreKeyTextOutputFormat: 读写普通HDFS文本文件. SequenceFileInputFormat/SequenceFileOutputFormat: 读写SequenceFile格式的HDFS文件. Hive 使用如下SerDe 类(反)序列化数据: MetadataTyp…

腾讯云mysql架构_一个数据库存储架构的独白

本文由云社区发表本文作者&#xff1a;许中清&#xff0c;腾讯云自研数据库CynosDB的分布式存储CynosStore负责人。从事数据库内核开发、数据库产品架构和规划。曾就职于华为&#xff0c;2015年加入腾讯&#xff0c;参与过TBase(PGXZ)、CynosDB等数据库产品研发。专注于关系数据…

groupby索引有效吗_SQL IN 一定走索引吗?

摘要IN 一定走索引吗&#xff1f;那当然了&#xff0c;不走索引还能全部扫描吗&#xff1f;好像之前有看到过什么Exist,IN走不走索引的讨论。但是好像看的太久了&#xff0c;又忘记了。哈哈&#xff0c;如果你也忘记了MySQL中IN是如何查询的&#xff0c;就来复习下吧。问题问题…

推荐系统之 BPR 算法及 Librec的BPR算法实现【1】

【推荐系统之 BPR 算法】 1、关于BPR的论文原文&#xff1a; BPR: Bayesian Personalized Ranking from Implicit Feedback 2、参考1&#xff1a;论文快读 - BPR: Bayesian Personalized Ranking from Implicit Feedback &#xff08;该博主的网站不错&#xff0c;尤其论文快…

ios 筛选_万千网友让quot;低调使用quot;的软件!居然还支持iOS

点击蓝字关注我们昨天的耳朵神器大家感觉怎么样&#xff1f;享受了耳朵今天我们享受一下眼睛~可能很多同学对漫画是情有独钟但是&#xff0c;之前小黑一直介绍的都是安卓端的软件今天要给大家介绍的这款软件是IOS安卓都有终于可以不被IOS的同学吐槽了而且经过测试小黑真的想说一…

CentOS7:JDK1.7.0_80安装

一、安装前检查 执行以下命令&#xff1a; rpm -qa | grep jdk 查看系统是否已经自带openjdk,如果存在 执行以下命令&#xff1a; yum -y remove files files为查出的、系统自带的openjdk相关文件&#xff0c;运行以上命令将相关文件卸载 执行命令 java -version[rootlocalhost…

spring+mybatis 多数据源整合

原文&#xff1a;http://blog.csdn.net/fhx007/article/details/12530735 ---------------------------------------------------------------------------------- 直接看spring的配置吧 <!-- 数据源配置 --> <bean id"ds1" class"org.apache.commo…

四管前级怎么去掉高低音音调_一些歌曲音调太高怎么才能唱上去??

展开全部首先得提高肺活量 然后就是练声&#xff01;怎 样 练 声&#xff1a;练声的目的1&#xff0c;使歌唱发声系统各器官的肌肉更e68a84e8a2ad62616964757a686964616f31333236373231有力&#xff0c;并能协调一致。2&#xff0c;建立正确的声音概念。3&#xff0c;扩展音域&…

java元数据是什么_用存储过程和 JAVA 写报表数据源有什么弊端?

用存储过程和 JAVA 写报表数据源有什么弊端&#xff1f;跟着小编一起来一看一下吧&#xff01;我们在报表开发中经常会使用存储过程准备数据&#xff0c;存储过程支持分步计算&#xff0c;可以实现非常复杂的计算逻辑&#xff0c;为报表开发带来便利。所以&#xff0c;报表开发…

mysql多实例安装启动_MySQL多实例安装启动

Tips&#xff1a;之前我们的一个实例是mysql3306&#xff0c;我们现在再安装一个mysql33071。和之前一样&#xff0c;创建需要的目录文件夹mkdir -p /data/mysql/mysql3307/{data,logs,tmp}创建完 就给文件授权chown -R mysql:mysql /data/mysql/mysql3307/2.进入mysql3307cd /…