上學期小師妹的小導師要她收集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只有一個。