如何从网站上提取所有网址?

时间:2012-03-02 15:20:28

标签: python unix

我正在用Python编写一个程序来提取给定网站的所有网址。来自网站的所有网址都不是来自网页。 我想我不是第一个想要这样做的人,我想知道是否有现成的解决方案,或者我是否必须自己编写代码。

4 个答案:

答案 0 :(得分:0)

这并不容易,但一个不错的出发点是调查这两个库:

urllib
BeautifulSoup

答案 1 :(得分:0)

我没有看到任何现成的脚本在快速谷歌搜索中执行此操作。

使用scrapy框架使这几乎变得微不足道。

耗时的部分是学习如何使用scrapy。这些教程虽然很棒,但也不会那么长。

http://doc.scrapy.org/en/latest/intro/tutorial.html

创建其他人可以使用的解决方案是成为编程社区一员的乐趣之一。如果没有刮刀,您可以创建一个每个人都可以用来从网站获取所有链接的刮刀!

答案 2 :(得分:0)

给出的答案是我建议的(+1)。

但如果您真的想快速而简单地做一些事情,并且您正在使用* NIX平台,那么试试这个:

lynx -dump YOUR_URL | grep http

YOUR_URL是您要检查的网址。 应该为您提供所需的所有链接(未完全写入的链接除外)

答案 3 :(得分:0)

首先,您必须使用urlibrequests等软件包下载网页的HTML内容。

之后,您可以使用Beautiful Soup来提取网址。实际上,their tutorial显示了如何提取<a>元素中包含的所有链接作为具体示例:

for link in soup.find_all('a'):
    print(link.get('href'))
# http://example.com/elsie
# http://example.com/lacie
# http://example.com/tillie

如果您还想找到未包含在<a>元素中的链接,您可能需要自己编写更复杂的内容。

编辑:我还遇到了两个专门为此任务创建的Scrapy链接提取器类:

http://doc.scrapy.org/en/latest/topics/link-extractors.html