【问题标题】:How to get subpages of an URL without knowing them?如何在不知道它们的情况下获取 URL 的子页面?
【发布时间】:2019-04-08 13:22:58
【问题描述】:

我想知道某个 URL 的任何子页面。例如。我有 URL example.com。可能存在子页面 example.com/home、example.com/help 等。是否可以在不知道确切名称的情况下获取所有此类子页面?

我认为我可以使用网络爬虫来处理这个问题。但它只是抓取页面本身提到的页面。

我希望你能理解我的问题并能帮助我解决这个问题。

谢谢!

【问题讨论】:

  • 您可以猜测名称或使用流行名称列表。您可以生成所有可能的名称(蛮力)。您可以询问 Google 搜索 - 也许它的数据库中有其他子页面。所以通常你不能这样做。
  • 稍后我回家后将代码发送给您。 1.问题是我需要的子页面只是随机生成的,没有任何模式,大约30个字符。所以猜测子页面需要很长时间。 2.子页面没有被索引,所以我无法通过谷歌的帮助找到它们。谢谢。

标签: url scrapy web-crawler


【解决方案1】:

回答你的问题,是的。 Scrapy“爬行”蜘蛛通过设置规则来工作,这些规则可以设置为完全按照您的要求进行。如有疑问,请始终go to the docs!

需要注意的几点: 你可以像创建通用爬虫一样创建爬虫!

scrapy genspider -t crawl nameOfSpider website.com

使用爬虫,你必须设置规则来基本上告诉scrapy去哪里和不去哪里;你的正则表达式怎么样?!

class MySpider(CrawlSpider):
    name = 'example.com'
    allowed_domains = ['example.com'] # PART 1: Domain Restriction
    start_urls = ['http://www.example.com']

    rules = (
        Rule(LinkExtractor(allow=('.*')), callback='parse_item'), # PART 2: Call Back
    )

现在我从官方文档中复制并粘贴了它,并更改了它的外观,但我还没有检查过代码,所以是的......但逻辑在那里......

IThis 的工作原理是根据您设置的规则获取它可以看到的所有链接,对所述链接执行某些操作。

  1. 您想限制所有其他域,但您抓取的域除外

  2. 在示例中,我将通配符设置为从字面上接受域中的每个页面...一旦您弄清楚网站的结构,您就可以使用逻辑来构建您需要的内容。

不过,您应该更频繁地查看文档。我已经使用scrapy 大约 6-7 年了,但我仍然发现自己回到了手册页!

【讨论】:

  • OP 要求一种方法来查找无法抓取的 URL。
【解决方案2】:

不,你不能。

按照您描述情况的方式,网站打算将这些所需的 URL 保密。

任何找到此类 URL 的方法都是安全漏洞,应立即向网站所有者报告,以便他们修复。

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多