【问题标题】:How can I find (and scrape) all web pages on a given domain using Python?如何使用 Python 查找(并抓取)给定域上的所有网页?
【发布时间】:2013-06-19 20:39:27
【问题描述】:

我如何抓取一个域来查找所有网页和内容?

例如:www.example.com、www.example.com/index.html、www.example.com/about/index.html等..

我想用 Python 来做这件事,如果可能的话,最好用 Beautiful Soup..

【问题讨论】:

  • 这可能更适合 StackOverflow ......但你所描述的是一个网络爬虫。尝试谷歌搜索。
  • 根据您的需求和特定网站允许的情况,抓取可能不是您的最佳选择。许多免费内容项目为其内容提供数据库转储,例如Stack ExchangeWikipedia。其他域提供用于访问其内容的 API。

标签: python http dns


【解决方案1】:

你不能。页面不仅可以基于后端数据库数据和搜索查询或您的程序提供给网站的其他输入动态生成,而且有几乎无限的可能页面列表,并且知道哪些页面存在的唯一方法是测试看看。

你能得到的最接近的方法是根据页面内容本身的页面之间的超链接来抓取网站。

【讨论】:

  • 谢谢,我猜是这样!
  • 我认为这不是真的。有“蜘蛛”的信息安全工具,去跟踪从一个页面到所有其他页面的所有链接(只要它们仍在域中),然后冲洗并重复。 OP,您可以使用 BeautifulSoup 自己构建此类代码,使用 Python 访问该页面上位于同一域中的所有链接,并在每个页面上执行相同操作。
【解决方案2】:

您可以使用 Python 库 newspaper
使用sudo pip3 install newspaper3k安装
您可以抓取特定网站上的所有文章。

from newspaper import Article
url = "http://www.example.com"
built_page = newspaper.build( url )
print("%d articles in %s\n\n"%(built_page.size(), url))
for article in built_page.articles:
    print(article.url)

您可以从那里使用Article object API 从页面获取各种信息,包括原始 HTML。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多