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

导入导出数据

导入数据 从文件中装载数据 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; 接下来了解一…