前言

初学python,写了一个爬虫程序练练手。
这段代码通过手动输入关键词,爬取自然杂志官网文章题目、摘要和下载地址。
由于是国外网站爬虫速度较慢。

代码如下

import requests
import re
import ospath = os.path.abspath(os.path.dirname(__file__))def getHTMLText(url):try:#headers = {#    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}headers = {'User-Agent': 'Mozilla/5.0'}r = requests.get(url, headers)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""def main():print('爬虫结果为Nature搜索引擎中内容!')print('爬虫结果存放在 nature爬虫.txt 中!')keywords = input("请输入关键词:")#keywords = "GaInP"depth = input("爬取的页数:")#depth = 1start_url = 'https://www.nature.com/search?q=' + keywordsresult =[]for i in range(int(depth)):try:url = start_url + '&page=' + str(i + 1)html = getHTMLText(url)papers_rank = re.findall(r'<div\sclass="cleared">.*?data-track-label="(.*?)" >', html, re.DOTALL)papers_id = re.findall(r'<div\sclass="cleared">.*?<a href="(.*?)" itemprop=".*?"', html, re.DOTALL)papers_name_pre = re.findall(r'<div\sclass="cleared">.*?data-track-label=".*?" >(.*?)</a>', html, re.DOTALL)papers_name = []for paper_name_pre in papers_name_pre:x = re.sub(r'<.*?>', "", paper_name_pre)papers_name.append(x.strip())note1_1 = ('=' * 40 )note1_2 = ( '=' * 18 + '第%d页' % (i + 1) + '=' * 18 )note1_3 = ( '=' * 40)print(note1_1)print(note1_2)print(note1_3)result.append(note1_1)result.append(note1_2)result.append(note1_3)#i = 1for value in zip(papers_rank, papers_id, papers_name):paper_rank, paper_id, paper_name = value paper_url = 'https://www.nature.com' + str(paper_id)result.append(paper_url)print(paper_url)html_abstract = getHTMLText(paper_url)paper_abstract = re.findall(r'<meta\sname="description"\scontent="(.*?)"/>', html_abstract, re.DOTALL)paper_rank = {'文章序号': paper_rank}paper_name = {'文章名称': paper_name}paper_abstract = {'文章摘要': paper_abstract}result.append(paper_rank)result.append(paper_name)result.append(paper_abstract)print(paper_rank)print(paper_name)print(paper_abstract)note2 = '=' * 40print(note2)result.append(note2)#i==6:#    break#i= i+1except:continuefilename = 'nature网站爬虫.txt'with open(filename,'w',encoding='utf-8') as f:for line in result:n = 1for i in str(line):f.write(i)if n == 100:f.write('\n')n = 0n +=1  f.write('\n')main()

附录

程序写完后,我用python的pyinstaller库将其打包成可以在window系统下运行的exe程序。
以下程序可以直接运行,并将下载结果存入nature网站爬虫.txt文件中。
下载地址如下:
链接:https://pan.baidu.com/s/1LmbXmVuc80oegVdJBD31QA
提取码:eguf

【爬虫】用Python爬取《Nature》杂志文章的题目、摘要、下载地址相关推荐

  1. python爬取公众号文章如何获取发布时间

    python爬取公众号文章如何获取发布时间 在上一篇爬取公众号的文章中爬虫如何爬取微信公众号文章介绍了如何获取公众号的所有历史文章链接,但当我根据链接去爬取文章的时候,却遇到了一个小问题,就是文章的发 ...

  2. Python爬取书包网文章实战总结

    python爬取书包网文章总结 今天闲来无事去看小说,但是发现没办法直接下载,所以呢就用python爬虫来下载一波了,哈哈- 爬取的是这篇小说:剑破九天(是不是很霸气,话不多说,开始-) 总体思路步骤 ...

  3. 【实用工具系列之爬虫】python爬取资讯数据

    系列 1.[实用工具系列之爬虫]python实现爬取代理IP(防 '反爬虫') 2.[实用工具系列之爬虫]python爬取资讯数据 前言 在大数据架构中,数据收集与数据存储占据了极为重要的地位,可以说 ...

  4. Python爬取国家地理杂志的图片

    一.简介:Python爬取国家地理杂志的图片 二.代码展示 from bs4 import BeautifulSoup import requests import osos.mkdir('./img ...

  5. selenium+python爬取简书文章

    页面加载逻辑 当你兴致勃勃地从网上学习了基本的爬虫知识后就像找个目标实践下,拥有大量文章的简书包含了大量的有价值信息,所以自然成为了你的选择目标,如果你尝试之后会发现并没有想象的那么简单,因为里面包含 ...

  6. 【爬虫】Python爬取电商平台评论完整代码

    利用Ajax爬取淘宝评论,这里完整的补充一下,包括数据存储. 对于Ajax参数的分析,Python爬取平台评论,这篇文章分析过了这里不再重复了. 主要是完善一下代码. import time impo ...

  7. python 爬取上海体育彩票文章标题、时间、内容

    python期末大作业 爬取上海体育彩票文章标题.时间.内容 并计算词频.生成特殊形状的词云图 利用selenium爬取内容代码: # https://www.shsportslottery.com/ ...

  8. Python爬虫教程-Python爬取股票数据过程详解

    这篇文章主要介绍了基于Python爬取股票数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本环境配置 python 3.6 pycha ...

  9. 如何用python爬取公众号文章_如何使用 Python 爬取微信公众号文章

    我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章.但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦. 于是便想着能 ...

  10. python爬取斗图啦表情包并下载到本地

    迫于无聊,又刚好正在学习python,就来记录一篇关于python爬取图片链接下载本地的入门文章... 主要用到的模块: request 和 BeautifulSoup4 开发之前建议先看一下官方给出 ...

最新文章

  1. 2021年春季学期-信号与系统-第四次作业参考答案-第十二小题
  2. 小技巧:帮你批量删除代码前的行号
  3. Java写 soapclient_Java for Web学习笔记(一一八):【篇外】Soap client
  4. javascript继承的实现
  5. 数据中心使用dtu远程连接oracel 9i数据库问题
  6. 购物车模块如何进行测试?
  7. centos mysql_CentOS MySQL数据库备份工具mysqldump介绍
  8. php输入数据不能为空,输入的数据模型标识(modelID)'的值不能为空或者空白字符串...
  9. Hadoop热添加删除节点(含Hbase)
  10. c语言二级考试程序设计题的做题步骤,计算机二级C语言上机考试操作步骤与流程.doc...
  11. VTM1.0代码阅读:xCheckRDCostMerge2Nx2N函数
  12. 用花生壳搭建个人简易静态网站
  13. 计算机网络工程毕业论文范文大全,网络工程专业毕业设计论文范文
  14. win教程:如何查看本机的IP地址
  15. 仓库实现降本增效的秘密法宝,WMS智能仓储系统
  16. Unity3D 局部截图、全屏截图、带UI截图三种方法
  17. 如何在Windows server 2012配置DHCP服务器
  18. 单元测试——Unittest(测试报告)
  19. 计算机专业助我成长作文700,你让我成长作文700字
  20. 逻辑式编程语言极简实现(使用C#) - 1. 逻辑式编程语言介绍

热门文章

  1. 彻底卸载Android Studio
  2. 什么叫java方法重载?
  3. parasolid 原因 效率_SolidWorks、creo、UG哪个更适合机械设计?听听行业大咖怎么说...
  4. 淘客APP开发定制系统推荐
  5. Linux下gzip、bzip、zip、tar压缩命令的使用详解
  6. linux bzip2 压缩目录,linux的gzip、bzip2、xz三种压缩使用方法工具介绍
  7. 由公式抽样检查所想到的...
  8. 毕设讲解之 --- 如何完成小程序毕业设计
  9. mysql 查询最早 表_MySQL-如何查询表中最早时间和最晚时间
  10. html手机表白弹窗,抖音弹窗表白代码怎么玩 弹窗表白制作方法与教程一览