首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于正则表达式的模板HTML中纸张URL的提取

基于正则表达式的模板HTML中纸张URL的提取
EN

Stack Overflow用户
提问于 2020-09-16 01:21:10
回答 1查看 31关注 0票数 1

问题

我现在进入一个自然语言处理项目。在我弄脏我的手之前,我计划在dataset上阅读其他人的作品,在那里他们被组织为一个领导板 (参见“三向分类”部分)。

然而,为了下载这些文件,我需要手动点击每个URL (其中大约有50个),这是耗时的。因此,我试图从HTML中提取这些URL,如下所示:

代码语言:javascript
复制
<h3>Three-way classification</h3>

<blockquote>
<table class="newstuff">

<tr class="header">
<th>Publication</th>
<th>&nbsp;Model</th>
<th>Parameters</th>
<th>&nbsp;Train (% acc)</th>
<th>&nbsp;Test (% acc)</th>
</tr>

<tr class="section">
<th colspan="5" style="background-color:transparent; color:#646464;">Feature-based models</th>
</tr>

<tr>
<td><a href="http://nlp.stanford.edu/pubs/snli_paper.pdf">Bowman et al. '15</a></td>
<td>Unlexicalized features</td>
<td></td>
<td style="text-align: right">49.4</td>
<td style="text-align: right">50.4</td>
</tr>

<tr>
<td><a href="http://nlp.stanford.edu/pubs/snli_paper.pdf">Bowman et al. '15</a></td>
<td>+ Unigram and bigram features</td>
<td></td>
<td style="text-align: right">99.7</td>
<td style="text-align: right"><em>78.2</em></td>
</tr>


<tr class="section">
<th colspan="5" style="background-color:transparent; color:#646464;">Sentence vector-based models</th>
</tr>

<tr>
<td><a href="http://nlp.stanford.edu/pubs/snli_paper.pdf">Bowman et al. '15</a></td>
<td>100D LSTM encoders</td>
<td style="text-align: right">220k</td>
<td style="text-align: right">84.8</td>
<td style="text-align: right">77.6</td>
</tr>

<tr>
<td><a href="https://www.nyu.edu/projects/bowman/spinn.pdf">Bowman et al. '16</a></td>
<td>300D LSTM encoders</td>
<td style="text-align: right">3.0m</td>
<td style="text-align: right">83.9</td>
<td style="text-align: right">80.6</td>
</tr>

<tr>
<td><a href="http://arxiv.org/pdf/1511.06361v3.pdf">Vendrov et al. '15</a></td>
<td>1024D GRU encoders w/ unsupervised 'skip-thoughts' pre-training</td>
<td style="text-align: right">15m</td>
<td style="text-align: right">98.8</td>
<td style="text-align: right">81.4</td>
</tr>
...

我知道我可以使用requestsbs4.BeautifulSoup下载和解析这个页面。但是我想不出一种提取URL的方法,因为找出每一行并不容易(表外还有其他URL,所以我不能说从HTML中提取的URL就是我想要的)。

有人能帮我吗?提前谢谢你。

更新

主要的困难是从主板中只提取,它被标记为

代码语言:javascript
复制
<h3>Three-way classification</h3>

<blockquote>
<table class="newstuff">
...

</table>
</blockquote>

在这个排行榜之前和之后,有许多与我的目的无关的上下文,其中也有很多URL。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-16 02:01:38

可以使用正则表达式和findall()方法来查找来自给定html内容的所有交互链接。

BeautifulSoup提供了一种从html中读取表的简单方法。

通过使用regex和BeautifulSoup,可以实现在给定的html内容中读取pdf链接的目标。

使用regex和BeatifulSoup的BeatifulSoup工作示例

代码语言:javascript
复制
# File name: find-pdf-links.py

import re
from bs4 import BeautifulSoup

htmlContent = """
    <h3>Three-way classification</h3>
    ...
    <td><a href="http://nlp.stanford.edu/pubs/snli_paper.pdf">
    ...
    <td><a href="http://nlp.stanford.edu/pubs/snli_paper.pdf">
    ....
    <td><a href="http://nlp.stanford.edu/pubs/snli_paper.pdf">
    ......
    <td><a href="https://www.nyu.edu/projects/bowman/spinn.pdf">
    ...
    <td><a href="http://arxiv.org/pdf/1511.06361v3.pdf">
"""

# Read webpage
webPage = BeautifulSoup(htmlContent)

# Read table form the webpage
tableOfLinks = webPage.find("table")

print("PDF links:")
for link in tableOfLinks.findAll('a', attrs={'href': re.compile("^http://.*pdf$")}):
    print(link.get('href'))

输出:

代码语言:javascript
复制
> python find-pdf-links.py

PDF links:
http://nlp.stanford.edu/pubs/snli_paper.pdf
http://nlp.stanford.edu/pubs/snli_paper.pdf
http://nlp.stanford.edu/pubs/snli_paper.pdf
http://arxiv.org/pdf/1511.06361v3.pdf

更多信息:

regex.asp

https://www.geeksforgeeks.org/python-check-url-string/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63911855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档