让我们找到最好的独享代理IP服务器
Proxy-Seller的独享、ISP、移动代理 - 永远不会被阻止

使用Praw和Python爬取Reddit - 详细操作步骤


无论你对 Reddit 在集体意识中的作用是爱是恨,但不可否认的是,Reddit 包含了大量难以理解的数据,而这些数据在很多方面都很有价值。仅数据集子页面本身就是一个数据宝库,但即使不是专门用于数据的子页面也包含大量数据。

因此,在某些时候,许多网络刮擦工具会希望抓取和/或刮擦 Reddit 的数据,无论是用于主题建模、情感分析,还是其他数据在当今时代变得如此有价值的原因。从 Reddit 搜刮数据仍然是可行的,Reddit 甚至鼓励这样做,但与从其他网站搜刮数据相比,这样做会有一些限制,让人更加头疼。

Reddit 增加了搜索难度!原因如下

过去,从 Reddit 上抓取任何东西都很简单,只需使用 Scrapy 和一个 Python 脚本 以在单个 IP 地址允许的范围内提取尽可能多的数据。这是因为,如果你看一下最后一句话中的指南链接,其中的诀窍就是根据页码在 Reddit 的子域中逐页抓取。

当一页上的所有信息都收集完毕后,脚本就知道该进入下一页了。这就是为什么脚本中的基本 URL 会以 "pagenumber="结尾,留出空白供蜘蛛浏览页面。

现在情况发生了变化。页码已被无限滚动所取代,它催眠了无数网民,让他们无休止地搜索新鲜内容。幸运的是,Reddit 的 API 易于使用,易于设置,对于普通用户来说,24 小时内抓取的数据绰绰有余。下面,我将为每个人,即使是从未编写过代码的人,提供逐步说明。

返回菜单 ↑

获取 Python 并在此过程中不弄乱任何东西

下面我们将向从未使用过任何形式代码的人讲解如何使用 Python 从 Reddit 搜刮数据。熟悉代码的人会知道哪些部分可以跳过,比如安装和入门。

对于初次使用 Python 的用户来说,一件小事就可能把整个 Python 环境搞得一团糟。因此,为了安全起见,如果您不知道自己在做什么,该怎么做?

获取 Python

  1. 下载并安装 Python.点击该链接后,您将看到一系列不同版本 Python 的下载选项。为此,最好选择最新版本。点击顶部的下载链接。
  2. 向下滚动所有关于 "PEP "的内容,现在这些都不重要。到达副标题 "PEP"。文件'.
    • 对于 Mac,这将会更容易一些。如果不确定电脑是 32 位还是 64 位,只需点击 32 位链接。如果知道是 64 位,则点击 64 位。双击 pkg 文件夹,就像双击其他程序一样。跳转到下一节。
    • Windows 用户最好选择写有 "可执行安装程序 "的版本,这样就无需构建过程。同样,只有当你知道你的电脑是 64 位电脑时,才能点击版本说明中带有 64 的版本。你应该点击"为了安全起见,使用基于 Web 的 Windows x86 安装程序。 下载完成后,双击 .exe 文件。

安装 Python

同样,这也不是 最好的 安装 Python 的方法;这是安装 Python 的方法,以确保第一次安装不会出错。最终,如果您了解了用户环境和路径(对于 Windows 来说要复杂得多--Windows 用户,玩得开心点),以后再想办法吧。

下面是它将显示的内容。我们需要的选项在下图中。这个路径(为了安全起见我涂黑的部分)并不重要;如果一切顺利,我们以后就不需要找到它了。 确保已将 Python 添加到 PATH。

安装 Python

我不会在这里解释原因,但这是最安全的方法。 点击 "立即安装 "就可以了。现在我们有 Python 了。耶你可能会

进入命令提示符/终端

  1. Mac 用户:在 "应用程序 "或 "启动盘 "下找到 "实用工具"。然后找到终端。加载后,输入 "python",然后按回车键。如果没有,说明出了问题。输入 "Exit()",不加引号,然后按回车键,就这样。
  2. Windows:对于 Windows 10,可以按住 Windows 键,然后按 "X"。然后选择 "命令提示符"(不是 "管理员提示符",如果它不能正常工作,也可以使用它,但它应该能正常工作)。同样:输入 "python",然后按回车键。如果出现 "无法识别为 .... "的提示,你就成功了,输入 "exit() "并回车(这两个都不需要引号)。
  3. 如果这一步出了问题,请先尝试重启。然后,我们将继续前进,抱歉。

Pip

我们需要 pip 中的一些功能,幸运的是,我们在安装 python 时都安装了 pip。Mac 和 Windows 用户都要键入以下内容:

pip install praw pandas ipython bs4 selenium scrapy

一些先决条件应该和我们需要的东西一起自行安装。对于 Reddit 搜刮,我们只需要前两个:它需要在某处显示 "prew/pandas 已成功安装"。Scrapy 可能无法工作,我们现在可以继续。如果这段代码没有任何反应,那就试试看:

python -m pip install praw' ENTER、'python -m pip install pandas' ENTER、'python -m pip install ipython' ENTER。

暂时最小化该窗口。我们将在获得 API 密钥后再返回该窗口。

你也许喜欢阅读、

返回菜单 ↑

获取 Reddit API

您只需要一个 Reddit 账户和一个经过验证的电子邮件地址。

然后,您可以谷歌 Reddit API 密钥,或直接按照以下步骤操作 此链接.向下滚动条款,直至看到所需表格。

公司名称和公司联系人可以随意填写。POC 电子邮件应该是您注册账户时使用的电子邮件。

在 "Reddit API 用例 "下,你几乎可以写任何你想写的内容。在 "开发者平台 "下选择一个即可。

与任何编程过程一样,即使是这个子步骤也涉及多个步骤。首先要通过 Reddit 应用程序接口的用户身份验证;由于上文提到的原因,用其他方式搜索 Reddit 要么行不通,要么无效。

您所说的应用程序的主要用途似乎并不重要,但 "脚本 "选项的警告表明,选择该选项可能会带来不必要的限制。第一个选项--不是手机应用程序,但也不是脚本--是最接近任何一方所期望的诚实的选择。

确保将重定向 URI 设置为 http://localhost:8080.这就是刮擦数据的来源。您可以在搜刮过程中通过浏览器进入该页面,观看搜刮过程。

让我们从这个开始,看看它是否有效。然后,我们可以查看 API 文档,看看还能从网站上的帖子中提取什么。

现在,'OAUTH 客户端 ID *"是一个需要额外步骤的选项。点击旁边的链接 登录账户。

创建 Reddit API

  • 姓名:随你输入(我建议不要使用粗俗语言等)。
  • 描述: 在键盘上输入任意字母组合 "agsuldybgliasdg"。
  • SELECT 'web app
  • 关于网址:任何内容
  • 重定向 uri: ' http://localhost:8080 '

Reddit API 密钥

红色圆圈、字母和涂黑处的三串文字就是我们来这里的目的。复制它们,粘贴到记事本文件中,保存起来,放在手边。稍后我会参考这些字母。

返回菜单 ↑

将所有内容整合在一起

Praw 只是用于网络抓取的最佳 Python 软件包中的一个例子,它可用于特定网站的 API。在本例中,该网站就是 Reddit。Praw 专门用于抓取 Reddit,而且效果显著。只要你有适当的 APi 密钥证书(稍后我们将讨论如何获取),程序就会非常宽松地允许你一次抓取大量数据。不仅如此,当你抓取的可用数据用完时,程序还会提醒你刷新 API 密钥。

Praw 允许网络搜刮器找到它想要搜索的线程或子版块。然后,它只抓取刮板指示它抓取的数据。在下面的脚本中,我让它只获取帖子的标题、帖子的内容和帖子的 URL。

现在,返回命令提示符并输入 "ipython"。开始我们的脚本。

最初的几个步骤是导入我们刚刚安装的软件包。如果 iPython 运行成功,它将显示如下内容,并显示第一行 [1]:

iPython 第一行

有了 iPython,我们就可以在命令行中编写脚本,而不必运行整个脚本。这样做的好处是,它可以运行每一行提交的代码,当任何一行没有按预期运行时,Python 会返回一个错误函数。因此,如果我们正确安装了软件包,应该不会收到任何错误信息。因此,在上面讨论 praw 时,让我们先导入它。在第 1 行键入 'import praw,'

import praw

完成。Praw 已经导入,因此可以调用 Reddit 的 API 功能,然后导入我们安装的其他软件包:pandas 和 numpy。我们可能并不需要 numpy,但它与 pandas 关系密切,以备不时之需。

导入 numpy pandas

此外,由于这些软件包的使用频率很高,我们通常会将其简称为 "np "和 "pd"。同样,如果一切处理得当,我们将不会收到任何错误函数。如果我试图导入一个不存在的软件包,会发生以下情况:

没有名为肯特的模块

它读取不到名为 kent 的模块,因为显然 kent 并不存在。

不,让我们导入脚本的真正内容。下一行内容如下:在 import pandas as pd 之后,在 Ipython 模块中键入以下几行。这应该是第 4 行和第 5 行:

iPython 第 4 和第 5 行

帖子 = []'

评论 = []'

无需深入学习完整的 Python 教程,我们正在制作空列表。我们将在这些列表中存储 Reddit 线程的帖子和评论。请确保在这些代码的等号前后加上空格。

现在,转到包含 API 密钥的文本文件。在下面一行代码中,将你的代码替换为下面一行中指示你在此处插入代码的地方。在示例脚本中,我们将抓取 "LanguageTechnology "子红人区的前 500 个 "热门 "红人页面。

那么

reddit = praw.Reddit(client_id='YOURCLIENTIDHERE', client_secret='YOURCLIETECRETHERE', user_agent='YOURUSERNAMEHERE')

确保复制所有代码,不留空格,并将每个密钥放在正确的位置。如果不确定应将哪个键放在哪个位置,请参阅上文关于获取 API 密钥的部分。

praw Reddit API 密钥

如果运行顺利,说明这部分已经完成。我们已经准备好爬行和刮擦 Reddit。

因此,让我们调用下几行,下载并存储刮痕。

nlp_subreddit = reddit.subreddit('LanguageTechnology')

for post in nlp_subreddit.hot(limit=500):'

posts.append([post.title, post.url, post.selftext])'

后的冒号(limit:500),按 ENTER 键。然后按 TAB 键、

将同样的脚本逐行输入 iPython,也会得到同样的结果。然后,你还可以选择打印选项,这样你就可以看到刚刚采集到的内容,并决定是否将其添加到数据库或 CSV 文件中。

这样,我们只需运行代码,下载标题、URL 和我们指示爬虫抓取的内容的帖子:现在,我们只需要以一种可用的方式将其存储起来。这就是熊猫的作用所在。

帖子 = pd.DataFrame(posts, columns=['title', 'url', 'body'])'

就是这样!我们的表格就可以使用了。我们可以使用以下方法将其保存为 CSV 文件,以便 Excel 和 Google 表单读取。

posts.to_csv('FILE.csv')

文件名随你怎么叫。该文件将位于命令 promopt 当前所在的位置。你还可以查看你所刮擦的内容,并复制文本,只需键入

打印(帖子

如下图所示,它会直接显示在屏幕上:

打印帖子

发布 CSV

上图是完全相同的搜索结果(即本脚本中的变量 "posts")在 Excel 中的显示效果。如果一切运行成功并按计划进行,你的照片也会是这样。

如果抓取次数过多,就会出现请求次数过多的错误信息。 这是使用代理切换 IP 地址时的情况需要刷新您的 API 密钥.错误信息将显示 HTTP 和 401 的过度使用。

要刷新 API 密钥,您需要返回到 API 密钥所在的网站;在那里,您可以刷新密钥,也可以按照上述相同的说明制作一个全新的应用程序。无论哪种方法,都会生成新的 API 密钥。

不幸的是,对于非程序员来说,要使用 Reddit 的 API 进行搜刮,这是最好的可用方法之一。一些使用旋转代理的服务,如 Octoparse 在获得凭据后可通过应用程序接口运行,但对其成功率的评价并不乐观。

返回菜单 ↑

额外奖励:使用 python 抓取亚马逊评论

pip install requests lxml dateutil ipython pandas

如果还不行,请尝试用 pip install 手动输入每个软件包,即'.Pip install requests' 输入,然后输入下一个。如果还不行,就用同样的方法,但用 "python -m pip "代替 pip。例如 :

python -m pip install requests

如果命令提示符无法确认您输入的软件包已安装,则说明您的 python 安装出了问题。我建议卸载 python,重启计算机,然后按照上述说明重新安装。

编写脚本来搜索亚马逊评论是一种成功率可靠、出错率有限的方法,因为它总是能完成它应该做的事情,不受其他因素的影响。不过,某些代理提供商(如 Octoparse)特别为这项任务提供了内置应用程序。

你可以在 ipython 中逐行键入以下脚本。首先打开你的命令提示符/终端,导航到你希望下载废料的目录。在提示符下键入 "cd [PATH]",路径直接为 "C:/Users/me/Documents/amazon"。然后,在命令提示符下输入 "ipython",它就会像这样打开:

亚马逊的 python

然后,您可以尝试复制并粘贴这个脚本,发现 这里,并将其输入 iPython。

代码由 scraphero 编写

它似乎即插即用,但用户必须输入他们想从哪些产品中获取评论的具体信息。请务必阅读所有以 # 开头的行,因为这些注释将指导你如何操作。例如,当它说:

# 在此查找一些 Chrome 浏览器用户代理字符串 https://udger.com/resources/ua-list/browser-detail?browser=Chrome, '

建议您按照这些说明操作,以使脚本正常运行。此外,请注意脚本底部有一个 Asin 列表,并告诉您创建自己的列表。在这个例子中 获取亚马逊开发者应用程序接口找到您要抓取的每个产品的 ASINS,并按照相同的格式将其粘贴到此列表中。这样做之后,其他一切都会按照说明进行。

blank网络搜索代理 - 永远不会被阻止

在 Pinterest 上 Pin It

zh_CNChinese
Private Proxy Reviews