Python简单网络爬虫实战—下载论文名称,作者信息(上)中,学会了get到网页内容以及在谷歌浏览器找到了需要提取的内容的数据结构,接下来记录我是如何找到所有author和title的

1.从soup中get到data类

soup中提供了select方法来筛选所需的类。该方法使用方法如下:

articlename = soup.select('title')

该语句即将soup中所有的title元素放到articlename中。select也有其他用法

articlename = soup.select('.data') #类前面要加"."
articlename = soup.select('#username')#ID这种唯一的元素,前加"#"
articlename = soup.select('.publ-list .entry.editor .data')#可以组合查找,publ-list类下面的entry.editor类下面的data类,按次序用空格隔开
articlename = soup.select('.publ-list .entry.editor .data .title')[0].contents[0]#title类中第一个元素的第一个文本内容

我们用如下语句get到该网页中所有的data类,这样就包含了所有的author和title,去除了网页中其他无关的元素,离目标更近了一步

soup.select('.publ-list .entry.inproceedings .data')

2.data类中筛选所有author与title

这是一个data类的所有内容。

其中author元素还有更下一级的结构

可以看到,一个data类中author和title元素并不是紧密连接的,在每个authro行之间,有“,”和“:”行隔开,在title行下方,还有dataPublished、genre等元素,但下方的元素都是固定的,行数也固定。因此我把一个.data描述为如下的多维数组:

[
[author1,url,name ]
["," ]
[author2,url,name ]
[":" ]
[<br> ]
[title,name ]
["datePublished",content]
[</article> ]
]

由于作者数量不固定,因此还要计算作者数量。因为每个author元素后面都会跟一个标点符号,因此似乎只要计算data类的长度减去4,再除以2就可以得到作者数量,然而在实际操作中发现,应该减去5。直到现在我也没有明白原因,可能这里需要补充HTML网站相关的知识

authornum = int((len(articles)-5)/2)

得到了作者数量,就很容易定位到作者所在的行(下标)和title所在的行(下标)

观察元素内容可以看到,authorname和titlename都是唯一的文本,用以下命令获取即可

for i in range(0,authornum):
authorlist.append(str(articles.contents[i*2].get_text()))
articlename = str(articles.contents[(authornum+1)*2].get_text())

至此,该脚本的所有难点都搞定啦,接下来就水到渠成,理一下逻辑就ok啦

Python简单网络爬虫实战—下载论文名称,作者信息(下)的更多相关文章

  1. Python开发网络爬虫抓取某同城房价信息

    前言: 苦逼的我从某某城市换到另一个稍微大点的某某城市,面临的第一个问题就是买房,奋斗10多年,又回到起点,废话就不多说了,看看如何设计程序把某同城上的房价数据抓取过来. 方案:方案思路很简单,先把网 ...

  2. python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...

  3. 关于Python网络爬虫实战笔记③

    Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...

  4. Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...

  5. Python 利用Python编写简单网络爬虫实例2

    利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...

  6. Python 3网络爬虫开发实战》中文PDF+源代码+书籍软件包

    Python 3网络爬虫开发实战>中文PDF+源代码+书籍软件包 下载:正在上传请稍后... 本书书籍软件包为本人原创,在这个时间就是金钱的时代,有些软件下起来是很麻烦的,真的可以为你们节省很多 ...

  7. Python 3网络爬虫开发实战中文 书籍软件包(原创)

    Python 3网络爬虫开发实战中文 书籍软件包(原创) 本书书籍软件包为本人原创,想学爬虫的朋友你们的福利来了.软件包包含了该书籍所需的所有软件. 因为软件导致这个文件比较大,所以百度网盘没有加速的 ...

  8. Python 3网络爬虫开发实战中文PDF+源代码+书籍软件包(免费赠送)+崔庆才

    Python 3网络爬虫开发实战中文PDF+源代码+书籍软件包+崔庆才 下载: 链接:https://pan.baidu.com/s/1H-VrvrT7wE9-CW2Dy2p0qA 提取码:35go ...

  9. 《Python 3网络爬虫开发实战中文》超清PDF+源代码+书籍软件包

    <Python 3网络爬虫开发实战中文>PDF+源代码+书籍软件包 下载: 链接:https://pan.baidu.com/s/18yqCr7i9x_vTazuMPzL23Q 提取码:i ...

随机推荐

  1. PHP工程师学习计划

    从开始学习PHP到现在,只是大致的对PHP的一些基础的东西了解一下,从没有制定一个较为完整的学习计划,所以自己的编程水平一直都处在基本的入门阶段,所以结合自己的实际情况制定了一个感觉还算合理的学习计划 ...

  2. 微服务框架SpringCloud与Dubbo

    #v1.0.0# 1.背景 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点.阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm捐赠给 ...

  3. loj2425 「NOIP2015」运输计划[二分答案+树上差分]

    看到题意最小化最长路径,显然二分答案,枚举链长度不超过$\text{mid}$,然后尝试检验.````` 检验是否存在这样一个边置为0后,全部链长$\le\text{mid}$,其最终目标就是.要让所 ...

  4. k8s认证与授权

    认证用于身份鉴别,而授权则实现权限分派.k8s以插件化的方式实现了这两种功能,且分别存在多种可用的插件.另外,它还支持准入控制机制,用于补充授权机制以实现更精细的访问控制功能. 一.访问控制概述 ap ...

  5. 解决boot项目创建后启动日志报错

    <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</ ...

  6. BZOJ 3626 [LNOI2014]LCA 树剖+(离线+线段树 // 在线+主席树)

    BZOJ 4012 [HNOI2015]开店 的弱化版,离线了,而且没有边权(长度). 两种做法 1 树剖+离线+线段树 这道题求的是一个点zzz与[l,r][l,r][l,r]内所有点的lcalca ...

  7. vue 的nextTick的理解

    适用场景: 例如:你在DOM渲染之前对DOM进行了操作的话,这时肯定不会有效果,好比你在 vue 的生命周期 created 里面操作了DOM元素这时肯定不会有效果, 如果我们在 created 里面 ...

  8. laravel博客中文章删除遇到问题

    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'blog_article.id' in 'where clause' (SQL: sel ...

  9. [winafl]这几天的折腾

    1.自己写的exe 2.自己写的dll,然后写了接口程序去load...但是这个速度真是迷醉 先把基本的几种类型跑起来,再解决速度和样本的问题...

  10. rander()函数执行条件

    调用this.setState({}),如果数据改变了,rander()就行执行