Craigslist 是一个众所周知的数据收集难题,因为他们的设置方式让数据抓取变得非常困难。根本没有简单的方法来抓取数据。
在大多数商业、数据库和社交网站上,开发者为高级用户提供了 API,以便他们抓取数据并以所需格式输出。例如,看看 Facebook 为其 API 提供了多少文档。你可以从自己拥有的页面中提取几乎所有的 Insights 数据,也可以从不拥有的页面中提取大量公开数据。这一切甚至都非常简单。
Craigslist 是一个特殊的案例。他们有一个 API,但功能是反向的。Facebook 的 API 允许你提取数据,但不允许发布。你需要使用应用程序来实现这一功能。而 Craigslist 的 API 允许你发布,甚至可以批量发布,但不允许你提取只读数据。
这种实现方式有点反常,但从 Craigslist 的角度来看,这有一定道理。
通过允许企业,特别是拥有大量房产的房地产管理者,使用简单的 API 批量发布信息,Craigslist 获得了好处。另一方面,他们不允许第三方抓取数据并在非 Craigslist 网站上展示,因为这对他们没有任何好处。
即使你只想进行一些数据分析,这也只是增加了他们服务器的压力,而他们却没有任何收益。
Craigslist 确实有 RSS 源,你可以在网站的各个子部分和区域订阅。这些是供个人使用的,但如果你试图利用它们批量收集数据并在其他地方使用这些数据,你的访问权限可能会被阻止。Craigslist 甚至在其服务条款中明确表示:
你同意不使用或提供与 CL 互动或互操作的软件(除非是通用网络浏览器和电子邮件客户端,或我们明确许可的软件)或服务,例如用于下载、上传、发布、标记、电子邮件、搜索或移动使用。禁止使用机器人、蜘蛛、脚本、抓取工具、爬虫等,以及误导性、未经请求、非法和/或垃圾信息的发布/电子邮件。你同意不收集用户的个人和/或联系信息(“PI”)。
这意味着什么?其实很简单:
- 你只能通过网络浏览器或电子邮件客户端访问 Craigslist。
- 你只能通过网络浏览器或他们的批量发布 API 发布信息到 Craigslist。
- 你不能使用任何类型的蜘蛛、爬虫、脚本或机器人抓取数据。
- 你不能收集用户的个人数据或联系信息。
当然,还有基本的反垃圾邮件措施。简而言之,本文的整个重点——使用第三方软件抓取 Craigslist 数据——是违反 CL 使用条款的。
Craigslist 抓取的合法性
我为什么要提起这件事?主要有两个原因。一个原因很明显;我们是一个主要为代理提供指导和评论的网站,代理对于这个过程至关重要。另一个是一个基本的警告。
按照这些说明进行操作后,你所做的一切都由你自己承担。你现在知道,进入网站的行为违反了网站的使用条款。因此,你要对发生的一切负责,包括你的访问权限被阻止、你的帖子被删除或你的 IP 被禁止。你甚至可能会受到法律诉讼。
从 Craigslist 抓取数据合法吗?
Craigslist 过去甚至采取过这样的法律行动。当然,这完全取决于你抓取数据的规模,以及你收集的数据的用途。数据分析或多或少是可以的。商业用途,尤其是涉足 CL 领地的商业用途,将激怒这头野兽。
最引人注目的例子是 Craigslist 与 3Taps API 创建者(本身名为 3Taps)之间最近达成的法律纠纷。
本质上,3Taps 创建了一个 Craigslist 数据收集 API。他们与 Padmapper 公司合作,后者使用从 Craigslist 收集的房地产数据并将其叠加在地图上。这生成了一个房地产可用性地图,这确实是一个非常有用的功能,令人惊讶的是 Craigslist 还没有自己制作类似的东西。不过,这是下一节的内容。
Craigslist 显然不同意第三方网站使用其网站上的数据来违反其服务条款。他们早在 2012 年 6 月就对 3Taps 和 Padmapper 提起了诉讼,直到 2015 年 6 月才得以和解。这两家网站都被要求停止收集数据,3Taps 向 Craigslist 支付了整整一百万美元。
尽管 3Taps 和 Padmapper 仍然存在并使用来自非 Craigslist 网站的数据,但和解协议造成了损害,这只是试图抓取 CL 数据并将其用于商业用途时可能发生的后果的一个例子。
这些企业犯下的主要错误是忽视了 CL 发出的停止和终止信函并禁止其 IP。他们继续规避这些限制并抓取数据,这反过来又导致了进一步的法律诉讼。我的建议?如果你收到 C&D 信函,请遵守。这对你来说可能不值得。
Craigslist 的问题
Craigslist 是一个问题很多的网站。它于 2006 年首次亮相,但自那时以来发生了多大变化?多年来,他们进行过几次重大更新,但只需将当前设计与该网站推出时的互联网档案馆进行比较。它几乎没有任何变化。它居中而不是左对齐,颜色和间距更好,但基本上是相同的。
用户界面没有太大变化,但比以前隐藏了更多数据。如今,你会看到三种类型的广告。
- 带有纯文本联系信息的广告。这些广告通常由希望人们联系他们的企业发布。这些企业有工作人员接听电话,从而可以过滤掉那些令人讨厌的来电者。
- 带有模糊联系信息的广告。这些人发布个人广告,并以 (five…5,,,5) 1two….three-four56””7 这样的格式发布他们的电话号码。他们这样做是为了让人类能够稍微费点力气地解析电话号码,但机器人却发现这是不可能的。
- 没有联系信息的广告。如果你想联系广告发布者,你需要向 Craigslist 提供的匿名电子邮件地址发送电子邮件作为转发地址。你看不到发布者的任何信息,但他们会看到你的回信地址,并且可以自由地做出回应。
除此之外,如今 CL 上允许和不允许的内容也存在问题。帖子标题可以自由包含各种 Unicode 符号,事实上,这样做几乎比不这样做更有效,因为普通文本标题并不突出。这也给抓取工具带来了问题,它们需要弄清楚如何解析这些特殊字符或将它们全部删除。
当然,垃圾邮件问题一直存在。这在更“严肃”的版块(如房地产版块)中并不是什么大问题,因为这些版块受到严格监管。相反,在更私人的版块(如免费版块、招聘版块和整个交友类别)中,垃圾邮件问题才是大问题。
哦,CL 确实有反垃圾邮件措施。有时他们需要电话验证。他们有发帖限制,除了批量发帖 API,它只在某些部分有效。他们有一个自动系统来锁定违反规则的人。这些都不起作用。
最糟糕的是,几年前 Craigslist 曾采取措施提高网站的灵活性和可行性。你可以使用大量 HTML 来自定义帖子,使这个单调的网站看起来更强大,并以更好的方式提供更多信息。2013 年,Craigslist 删除了这些功能,将网站恢复为基本的黑白外观。他们称之为“飓风克雷格”,因为网络监控者和营销人员总是夸张得离谱。
飓风克雷格只有一个好处,那就是它标准化了帖子中的更多数据。它使机器人更容易从浏览器窗口提取数据,而不需要根据某些标准在代码中查找和解析数据。所以,Craigslist,你做得真好;你让我们更容易做你不想做的事。
为什么你可能会爬取 Craigslist
你可能出于什么原因而抓取 Craigslist 数据?嗯,有很多不同的原因。
在分析方面
你可能总是想收集数据来撰写报告。调查性新闻仍然存在,尽管如今可能很少见。你可能想抓取给定部分中的所有帖子并分析它们,例如产品的平均价格、发布频率,或将商品类型与联系用户的难度进行比较。当然,这些都不是盈利的;它们只是供你以其他方式使用的信息。老实说,我认为 Craigslist 对此没有意见,而且我认为你这样做是安全的,因为他们不会因此赢得官司。当然,我不是律师,所以对此持保留态度。
个人方面
你可以收集数据以获取你想要使用的信息。例如,如果你正在购买二手车,你可能希望收集有关二手车的所有数据,以关联价格、位置以及车辆的品牌/型号信息,这样你就可以在一个中心位置进行浏览。尽管 Craigslist 很有用,但他们的浏览和过滤有点糟糕。
盈利方面
你可以抓取想要购买和转售的物品的数据。一个常见目标是音乐会和活动门票;你可以监控已售罄的活动,抓取 Craigslist 以查找正在出售的活动门票,以低于特定价格的价格购买任何门票,然后在其他地方(如 eBay)以更高的价格转售。当然,这确实依赖于大量的个人努力,但是嘿,有些人会做很多事情来赚一些钱。
在商业方面
你可以用它来生成潜在客户。你可以从“求购”部分抓取任何正在搜索你提供的服务或商品的人,然后联系他们销售你的产品。这可能不是一种非常有效的生成潜在客户的方法——可能并不比一开始就发布销售广告更有效——但它确实存在。
当然,所有这些都取决于你是否愿意违反 Craigslist 的服务条款。我强烈建议避免任何明显的商业用途。采用 Padmapper 的方式会让你面临所有相同的可能的法律损害,而且已经有法律先例可以证明哪些论点可以成功,哪些不能成功。
从 Craigslist 抓取数据的分步指南
不幸的是,你用于抓取数据的具体方法很大程度上取决于你决定使用的工具。一般流程如下。
第 1 步:选择工具
第一步是选择一个你想用来抓取 Craigslist 的抓取工具。如果你愿意,你可以自己开发一个。如果你是一名程序员,这是一个有趣的练习。如果你不是,那么,既然已经存在这么多不同的工具,就没有理由费心去开发一个了。下面列出了一些选项,但它们绝不是所有可用的选项。
Apify Craigslist 抓取工具
Apify 是一个网页抓取平台,包含数百种现成的工具,可用于抓取热门网站的内容。Apify Craigslist Scraper 是免费的,使用起来也很简单,你可以根据任何搜索条件抓取帖子。
抓取工具将提取并下载帖子的图片、价格、发布日期和 URL。你可以安排抓取工具按你喜欢的频率运行,它甚至会在发现新帖子时向你发送电子邮件提醒。你可以将内置的Apify 代理服务与抓取工具一起使用,因此你甚至无需担心设置代理。
Cloud Crawler
此爬虫是专门在云端运行的网络蜘蛛,这使得第 2 步有点不必要。但是,使用起来相当困难。
关于它的文档不多。如果你想尝试编码但又不想从头开发抓取工具,那么它是个不错的选择。从好的方面来说,它是一个免费的开源项目。
Visual Web Ripper
Cloud Crawler 是在记事本 txt 文件中编码原始 HTML,而 Visual Web Ripper 则是 Dreamweaver。它是一款非常用户友好的图形化网页抓取工具,你可以指向要抓取的信息,然后程序会完成其余工作。
它有视频演示、精美的网站和一切。但它确实有局限性。免费试用版只能抓取网站上的 100 个元素,这可能会因脚本和代码而陷入困境。它也只能使用 15 天。但是,它非常昂贵。该程序完整版(包括终身升级)的许可证价格为 350 美元。
Python Craigslist 爬虫
这是另一个开源代码抓取工具,但使用起来更简单一些。与 Github 上的任何工具一样,它是免费的,使用最容易学习的语言之一编写。它可能是目前最受欢迎的免费 CL 抓取工具。
要以专业的方式使用 Python 和 Selenium 抓取 Craigslist 帖子,你应该遵循以下步骤:
- 为你的 Web 浏览器安装 Selenium Python 库和适当的 Web 驱动程序。
- 导入 Selenium 库并创建一个新的 Selenium
WebDriver对象。 - 使用
get()该对象的方法WebDriver在你的网络浏览器中打开 Craigslist 帖子页面。 - 使用对象
find_element_by_xpath()的方法WebDriver选择页面上包含要抓取的数据的特定元素。例如,如果你想抓取帖子标题,则可以使用以下代码:
title = driver.find_element_by_xpath("//span[@class='postingtitletext']/span[@id='titletextonly']")
text使用适当的方法(例如或)从选定元素中提取数据get_attribute()。例如,如果你想提取帖子标题,则可以使用以下代码:
title = title.text
- 使用代码中的
tryandexcept语句来处理抓取 Craigslist 帖子时可能发生的任何错误。例如,如果你尝试抓取的元素未在页面上找到,你的代码应该能够妥善处理错误并继续抓取其他数据。 time.sleep()在代码中使用该函数在 HTTP 请求之间引入延迟。这可以帮助防止你的 IP 地址因过度抓取而被 Craigslist 阻止。- 将抓取的数据保存到文件或数据库中以供将来使用。
遵循这些步骤可以帮助你以专业和高效的方式使用 Python 和 Selenium 抓取 Craigslist 帖子。
Scrapy
在我看来,这是最有用、最强大、最合法的爬虫之一。它被称为万能的网络爬虫,因此你可以将它用于 Craigslist 以外的很多地方。
它也限制较少,易于配置,而且免费。真的,我只是把最好的留到最后。Scrapy 最好的部分是文档。例如,如果你想抓取 Craigslist,你可以按照这个教程操作 ,它是围绕抓取特定区域的非营利性工作而构建的。它可能看起来有点吓人,但实际上并没有那么糟糕。
第 2 步:尽可能使用代理
如何避免触发验证码 Craigslist 抓取以及如何避免你的 IP 被自动阻止?
还记得我提到过 Craigslist 在阻止爬虫方面非常积极吗?代理是一种解决方案。他们识别爬虫的唯一方法是注意到同一个 IP 地址正在快速访问一个又一个页面。
他们甚至不知道该用户在做什么;可能只是浏览,就像 Google 的爬虫一样。我敢肯定他们已经将Google 列入白名单,但他们不会将你列入白名单。
代理的工作原理是将流量引导到轮流选择的 Web 服务器,过滤来自网站的源点。Craigslist 不会看到一个 IP 连续访问 100 个页面,而是会看到 20 个不同的 IP 每次访问 5 个页面。这是一个更合理的数字,而且不会限制你的访问。
当然,你需要弄清楚如何通过代理过滤你的抓取工具。Scrapy 有一些相关文档,但你需要自行审查代码并使其与你的配置配合使用。
第 3 步:收集和整理数据
设置好抓取工具并准备好收集数据后,只需运行它并收集数据即可。数据可能会输出到 CSV 文件中,可以使用任何电子表格程序(如 Excel 或 Google Sheets)打开。
浏览数据并按照你的意愿处理它!我再次警告你不要将其用于公共商业用途。
如果你这样做,Craigslist 很可能会派 C&D 律师来找你。个人使用会安全得多;他们最坏的做法就是封锁你的 IP,如果你使用代理,那这无所谓。

