【发布时间】:2014-04-13 19:13:55
【问题描述】:
我正在用 Python 构建一个网络爬虫,使用漂亮的汤来爬取维基百科。问题是维基百科有很多我不想看的垃圾链接。
例如:
目标链接前带有#的链接
<li class="toclevel-1 tocsection-1">
<a href="#Overview">
<span class="tocnumber">1</span>
<span class="toctext">Overview</span>
</a>
</li>
讨论页面
<li class="nv-talk">
<a href="/wiki/Template_talk:Data_structures" title="Template talk:Data structures">
<span title="Discuss this template" style=";;background:none transparent;border:none;;">t</span>
</a>
</li>
模板页面
<li class="nv-view">
<a href="/wiki/Template:Data_structures" title="Template:Data structures">
<span title="View this template" style=";;background:none transparent;border:none;;">v</span>
</a>
</li>
等等……
现在,我将我已经访问过的所有链接存储在字典中,这样我就不会访问它们两次,所以我可以通过简单地检查链接是否正常来避免 目标链接 # 符号已在表中。
但是,谈话、模板和其他此类页面有点麻烦。
它们的独特之处在于它们总是出现在 <li> 标记中,带有一些类属性("nv-talk"、"nv-view" 等),但是我的爬虫依赖于查看 <a> 标记,所以我不'无权访问包含它的<li> 标记的属性。
此外,并非页面上的所有链接都包含在<li> 标记中,因此我不能简单地搜索<li> 标记。
有什么想法吗?
【问题讨论】:
标签: python html beautifulsoup web-crawler