上学期小师妹的小导师要她收集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只有一个。