Geronimo

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

上学期小师妹的小导师要她收集2009年到现在所有年份的某个方向的全部论文的名称、作者

小师妹看着dblp上茫茫多的论文,心生绝望,弄了一下午+一个晚上才弄好了09和10两年的

于是我自告奋勇,用python给她写个脚本,虽然之前没有经验,但是也算是一种新的尝试

首先,最方便查找论文的地方当然是dblp,该网页长这样:

作者名称和论文名称都有,就很方便。

1.python请求网页

那么接下来首先要用python get到整个网页。

这个小工具需要用到两个模块:

import requests
from bs4 import BeautifulSoup

一个是requests,用于发起网页请求。

向网址为address(address必须完整,https://www.baidu.com)的html发起请求,返回的html赋给res,res编码格式为‘utf-8’:

res = requests.get(address)
res.encoding = 'utf-8'

另一个是BeautifilSoup模块

这个模块用来存储读取的网页(这里还要安装lxml模块):

soup = BeautifulSoup(res.text, 'lxml')

这样,soup中就存储了整个网页的全部信息,接下来所要提取的信息都从soup中来。

 那么怎么从soup中提取所需信息呢?这就需要查看源网页的结构了

2.谷歌浏览器查看网页结构

打开谷歌浏览器,打开目标网页(26th NDSS 2019: San Diego, CA, USA),F12:

在Elements中显示了该html的所有结构

基本上一个网页结构如下:

<html lang="en">
<head>...</head>
<body class="****" style="*****">...</body>
</html> == $0

用鼠标移动到代码行,左边的网页就会显示相应的部分。这让我们可以迅速找到所需对象的位置。

可以看到,作者名称是.publ-list类下的.entry.editor类下的.data类下的author

论文name是.publ-list类下的.entry.inproceedings类下的.data下的title

一个.data型代表一篇论文,可能没有author,也有可能有多个author,但title只有一个。

 

posted on 2019-09-17 20:39  Geronimo  阅读(3510)  评论(0编辑  收藏  举报