程序运行截图:

mysql代码:

CREATE TABLE `article` (`id` int(11) NOT NULL,`article_time` varchar(50) DEFAULT NULL,`article_volume` varchar(20) DEFAULT NULL,`article_author` varchar(2000) DEFAULT NULL,`article_name_english` varchar(2000) DEFAULT NULL,`article_name_chinese` varchar(2000) DEFAULT NULL,`article_content_english` varchar(5000) DEFAULT NULL,`article_content_chinese` varchar(2000) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

python代码:

import random
import re
import requests
import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=8080,user='root',passwd='123',db='students',charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 功能:获取历年的论文文献名中英文,作者名,摘要中英文,时间# 翻译接口 parm: content is english
def translator_chinese(content):"""英文翻译成中文"""Tranlator_URL = "http://fy.iciba.com/ajax.php?a=fy&f=en&t=zh-CHS&w=%s" % ('"' + content + '"')urls = re.findall(r'"out":"(.*?)","ci', requests.get(Tranlator_URL).text, re.S)if len(urls) > 0:result = (urls[0].encode('ascii').decode('unicode_escape')).replace("“", "").replace("”", "")return resultelse:return ""# for test
# print(translator_chinese(" therefore, be treated as a unity of contradictions."))#通过年份获取数据
def get_data(year):"""通过年份获取文献卷宗"""JZ_URL = "https://journals.sagepub.com/loi/oss?year=%i" % yearrespose = requests.get(JZ_URL)print("*" * 300)print("开始爬取%s年的文献数据!" % year)# 获取卷宗jz = (re.findall(r'class="expander".*?data-attr-vol="(.*?)"', respose.text, re.S))[1]print("卷宗:" + jz)# 获取文献urlarticle_ml = re.findall(r'class="row js_issue".*?href="(.*?)"', respose.text, re.S)print("文献目录地址:")for i in range(0, len(article_ml)):print(str(i + 1) + "." + article_ml[i])print("*" * 300)for temp in article_ml:data = requests.get(temp)article_time = re.findall(r'<div class="journalNavTitle">\n(.*?)\n</div>', data.text, re.S)# 获取文献时间time = article_time[0][article_time[0].index(",") + 1:len(article_time[0])]print("文献时间:" + time)# 获取文献地址addr = re.findall(r'class="ref nowrap" href="(.*?)"', data.text, re.S)Basic_URL = "https://journals.sagepub.com"print("文献列表地址:")for lb in range(0, len(addr)):print(str(lb + 1) + "." + addr[lb])for ad in addr:# 获取每个文献内容print("*" * 300)article_data = requests.get(Basic_URL + ad)article_c = re.findall(r'property="og:title" content="(.*?)"', article_data.text, re.S)if len(article_c) > 0:if "-" in article_c[0]:# 获取文献作者article_author = article_c[0][article_c[0].index("-") + 1:len(article_c[0])]# 获取文献名article_name_english = article_c[0][0:article_c[0].index("-")]article_name_chinese = translator_chinese(article_name_english)print("文献英文名字:" + article_name_english)print("文献中文名字:" + article_name_chinese)print("作者名字:" + article_author)else:article_author = ""article_name_english = article_c[0]article_name_chinese = translator_chinese(article_name_english)print("文献英文名字:" + article_name_english)print("文献中文名字:" + article_name_chinese)print("作者名字:" + article_author)else:break# 获取文献摘要article_content_data = re.findall(r'<div class="abstractSection abstractInFull"><p>(.*?)</p>',article_data.text, re.S)if len(article_content_data) > 0:article_content_english = article_content_data[0]article_content_chinese = translator_chinese(article_content_data[0])print("英文摘要:" + article_content_english)  # 英文摘要print("中文摘要:" + article_content_chinese)  # 中文摘要else:article_content_english = ""article_content_chinese = ""  # 中英文摘要都为空print("英文摘要:" + article_content_english)  # 英文摘要print("中文摘要:" + article_content_chinese)  # 中文摘要# 数据写入数据库id = random.randint(0, 999999999)sql = """insert into article(id,article_time,article_volume,article_author,article_name_english,article_name_chinese,article_content_english,article_content_chinese) values(%i,%s,%s,%s,%s,%s,%s,%s) """ % (id, "'" + time + "'", "'" + jz + "'", "'" + pymysql.escape_string(article_author) + "'","'" + pymysql.escape_string(article_name_english) + "'","'" + pymysql.escape_string(article_name_chinese) + "'","'" + pymysql.escape_string(article_content_english) + "'","'" + pymysql.escape_string(article_content_chinese) + "'")cursor.execute(sql)# # 提交到数据库执行print("id:%i数据爬取成功!" % id)db.commit()# 主函数
if __name__ == '__main__':for year in range(2015, 2017):get_data(year)else:print("数据爬取完成!")db.close()

程序可能存在部分bug,欢迎交流指正。

python爬虫篇1——爬取中英文论文文献数据相关推荐

  1. python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息

    python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...

  2. python爬虫实例之爬取智联招聘数据

    这是作者的处女作,轻点喷.... 实习在公司时领导要求学习python,python的爬虫作为入门来说是十分友好的,话不多说,开始进入正题. 主要是爬去智联的岗位信息进行对比分析出java和pytho ...

  3. Python爬虫实战:爬取steam打折优惠数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于云+社区,作者 Elapse 转载地址 https://bl ...

  4. python爬虫篇4——爬取专利著作权信息

    mysql代码: CREATE TABLE `copyright` (`id` int(11) NOT NULL AUTO_INCREMENT,`软件名称` varchar(500) DEFAULT ...

  5. python爬虫篇2——爬取深圳证券交易所股票金融数据

    程序运行截图: mysql代码: create database financial; use financial; CREATE TABLE `lrb` (`id` int(11) NOT NULL ...

  6. 【Python爬虫】从零开始爬取Sci-Hub上的论文(串行爬取)

    [Python爬虫]从零开始爬取Sci-Hub上的论文(串行爬取) 维护日志 项目简介 步骤与实践 STEP1 获取目标内容的列表 STEP2 利用开发者工具进行网页调研 2.1 提取文章链接和分页链 ...

  7. 携程ajax,Python爬虫实战之爬取携程评论

    一.分析数据源 这里的数据源是指html网页?还是Aajx异步.对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍. 提示:以下操作均不需要登录(当然登录也可以) 咱们先在浏览器里面搜索携 ...

  8. Python爬虫 scrapy框架爬取某招聘网存入mongodb解析

    这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...

  9. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

最新文章

  1. 人脸检测识别文献代码
  2. 【计算理论】计算理论总结 ( 自动机设计 ) ★★
  3. Mysql+innodb数据存储逻辑
  4. PL/SQL在win7/win8 x64位下使用客户端连接oracle
  5. CentOS服务器上部署 oracle10gr2
  6. 误操作自动锁定计算机,当离开电脑时,需要手动锁定电脑屏幕,或设置10分钟无活动自动锁屏,短时间离开的锁屏就无关紧要()...
  7. transition实现隐藏显示菜单栏效果
  8. doapk java环境_关于有的Apk无法反编译的探究
  9. Reinforcement Learning An Introduction~The 10-armed Testbed
  10. UWB定位原理详细介绍
  11. 【番外篇】利率二叉树模型对冲
  12. 计算机初学者先学什么语言,计算机语言入门先学什么?
  13. IP范围表示法(网络子网划分)
  14. 8本好书上新:越忙越要多读书 1
  15. Ubuntu系统英文大小写CapsLock切换混乱解决方法!
  16. 陶森大学计算机专业收入水平,2020PayScale计算机专业本科薪水排行
  17. 苹果玩对峙2显示打不开服务器,苹果对峙2为什么进不去
  18. c语言触屏滑动图片,jQuery手机触屏滑动的响应式图片轮播效果
  19. 《算法工程师带你去》读书笔记
  20. 某校2020专硕编程题-杨辉三角

热门文章

  1. 如何监控cpu温度(代替鲁大师) core Temp
  2. 简智音科技:提高短视频播放量的实用方法!
  3. Python决策树补全缺失信息
  4. 找到 问世间、情为何物的出处
  5. windows系统学习总结
  6. iOS小技巧总结,绝对有你想要的(上)
  7. ubuntu20.04蓝牙连接airpods
  8. 由于计算机的出现英语,电脑开机出现蓝屏怎么处理??就是出现很多英文和数字的那种。。。...
  9. 一般电脑丢失文件怎么才能迅速恢复丨迅龙数据恢复文件丨
  10. 【BSV动态】VXPASS成为首张获旧金山核准的区块链COVID-19疫苗卡