【问题标题】:Drupal URL structure for scraping用于抓取的 Drupal URL 结构
【发布时间】:2016-04-21 16:03:40
【问题描述】:

过去,我正在尝试使用 Python 脚本抓取一个用于音乐演出的 drupal 网站。

在使用 wordpress 网站时,我会像这样遍历 url:

http://wordpressevents.com/?p=1 ... http://wordpressevents.com/?p=10000

...这会让我转到一个我可以抓取的页面(如果那里有的话)。实际的 URL 类似于:

http://wordpressevents.com/music/some-band-youve-never-heard-of/

我的 Drupal 站点也有部分(例如 /gigs/ 或 /classical/ 等)。

有什么方法可以找出他们的网址,以便我可以用 Python 和 BeautifulSoup 抓取它(欢迎其他建议)?

理想情况下,我会找出结构是什么......

http://drupalevents.com/drupost?=1 ... http://drupalevents.com/drupost?=10000

等等

但也许它不会像这样工作?

【问题讨论】:

    标签: php python url drupal web-scraping


    【解决方案1】:

    在 drupal 中,唯一有保证的内容 url 结构是 /node/[some number]

    因此,对任意drupal 站点执行此操作的最佳方法是从/node/1 开始,然后从那里向上,每次递增1。或者,如果您查看站点上最新页面的来源并在 body 类标记中找到页面的节点 ID,那么您将知道最后一个数字并向后工作。例如,给定 node/185324 主体可以有类 node-1853524 。这可能不存在,因为主体类可能是基于站点设置方式的任何内容。

    大多数网站也使用 pathauto 模块来为页面提供比 node/123 更友好的东西

    pathauto 模块根据站点构建器指定的内容使用标记,为内容提供漂亮的 url。一种常见的方法是 /content/[node:title]。我怀疑这是否真的会对您有所帮助,但至少它会给您一些有关如何设置 drupal 站点的信息。

    【讨论】:

    • 抱歉,这件事的回归缓慢。好答案,谢谢!我已经尝试过你建议的方法(我很快就发现了),但到目前为止它非常慢而且似乎没有找到所有东西......这么多空白节点 ID!例如我正在用 Python 抓取 node/1 ... node/2 ... node/3 ... 等...我最多 30000,但有很多空白 ID,但我还没有接近事件从 2016 年开始(仍回到 2014 年)......而且每年只有大约 1,000 个事件......所以它们显然间隔很大,有很多空白节点 ID。遗憾的是,我也无法在 body 标签中找到它的内容:(
    猜你喜欢
    • 2021-01-13
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多