Python 需要 Web 抓取解决方案建议
Python Webscraping Solution Reccomendations required
我想知道什么是 best/preferred PYTHON 3.x 解决方案(执行速度快、易于实施、指定用户代理的选项、将浏览器和版本等发送到网络服务器,以避免我的 IP 被列入黑名单),它可以抓取以下所有选项的数据(根据我的理解,根据复杂性提及)。
- 表格中包含数据的任何静态网页/Div
- 一次加载完成的动态网页
- 需要用户名密码登录的动态网页,登录后一次性加载完成。
用户名密码示例 URL:https://dashboard.janrain.com/signin?dest=http://janrain.com
- 动态网页,需要使用来自 LinkedIn、google 等流行服务的 oauth 登录,并在我们登录后一次性完成加载。我知道这涉及一些页面重定向、令牌处理等。
基于 oauth 的登录示例 URL:https://dashboard.janrain.com/signin?dest=http://janrain.com
- 上面的所有要点 4 结合选择一些下拉菜单的选项(比如说 "sort by date")或者可以涉及选择一些复选框,显示的动态数据将根据这些复选框进行更改。
我需要在执行 check-boxes/drop-downs 操作后抓取数据,因为任何用户都会这样做来更改动态数据的显示
示例 URL - https://careers.microsoft.com/us/en/search-results?rk=l-seattlearea
您可以选择下拉菜单以及页面中的一些复选框
- 具有 Ajax 加载的动态网页,其中数据可以持续加载
=> 6.1 我们像 facebook、twitter 或 linkedin 主页一样不断向下滚动以获取数据
示例 URL - facebook、twitter、linked 等
=> 6.2 或者我们一直点击ajax容器末尾的一些button/div来获取下一组数据;
示例 URL - https://www.linkedin.com/pulse/cost-climate-change-indian-railways-punctuality-more-editors-india-/
在这里你必须点击页面底部的"Show Previous Comments"如果你需要查看和抓取所有评论
我想学习并构建一个精疲力尽的抓取解决方案,可以根据需要对其进行调整,以适应从要点 1 的简单任务到上面要点 6 的复杂任务的所有选项。
- 对于问题 1 和 2,我建议使用 BeautifulSoup。
- 对于 3 和 5,您可以使用 Selenium WebDriver(作为 python 库提供)。
使用 Selenium,您可以执行所有可能的操作(例如登录、更改下拉值、导航等),然后您可以通过 driver.page_source 访问 Web 内容(您可能需要使用睡眠功能等到内容已满)
- 对于 6,您可以使用他们自己的 API 来获取新闻提要列表和他们的 links(大多数返回的对象带有特定新闻提要的 link),获得 link 后,您可以使用 BeautifulSoup 获取网页内容。
注意:请在抓取之前阅读每个网站的条款和条件,因为其中一些提到自动数据收集是不道德的行为,我们作为专业人士不应这样做。
如果您正在寻找真正可扩展的防弹解决方案,Scrapy 适合您。事实上,scrapy 框架是 python 抓取任务的行业标准。
顺便说一下:我建议您避免使用 JS 呈现:所有这些东西(chromedriver、selenium、phantomjs)都是抓取网站的最后选择。
大多数 ajax 数据您可以通过伪造所需的请求来简单地解析。
多花点时间在 Chrome 的 "network" 选项卡上。
我想知道什么是 best/preferred PYTHON 3.x 解决方案(执行速度快、易于实施、指定用户代理的选项、将浏览器和版本等发送到网络服务器,以避免我的 IP 被列入黑名单),它可以抓取以下所有选项的数据(根据我的理解,根据复杂性提及)。
- 表格中包含数据的任何静态网页/Div
- 一次加载完成的动态网页
- 需要用户名密码登录的动态网页,登录后一次性加载完成。 用户名密码示例 URL:https://dashboard.janrain.com/signin?dest=http://janrain.com
- 动态网页,需要使用来自 LinkedIn、google 等流行服务的 oauth 登录,并在我们登录后一次性完成加载。我知道这涉及一些页面重定向、令牌处理等。 基于 oauth 的登录示例 URL:https://dashboard.janrain.com/signin?dest=http://janrain.com
- 上面的所有要点 4 结合选择一些下拉菜单的选项(比如说 "sort by date")或者可以涉及选择一些复选框,显示的动态数据将根据这些复选框进行更改。 我需要在执行 check-boxes/drop-downs 操作后抓取数据,因为任何用户都会这样做来更改动态数据的显示 示例 URL - https://careers.microsoft.com/us/en/search-results?rk=l-seattlearea 您可以选择下拉菜单以及页面中的一些复选框
- 具有 Ajax 加载的动态网页,其中数据可以持续加载 => 6.1 我们像 facebook、twitter 或 linkedin 主页一样不断向下滚动以获取数据 示例 URL - facebook、twitter、linked 等 => 6.2 或者我们一直点击ajax容器末尾的一些button/div来获取下一组数据; 示例 URL - https://www.linkedin.com/pulse/cost-climate-change-indian-railways-punctuality-more-editors-india-/ 在这里你必须点击页面底部的"Show Previous Comments"如果你需要查看和抓取所有评论
我想学习并构建一个精疲力尽的抓取解决方案,可以根据需要对其进行调整,以适应从要点 1 的简单任务到上面要点 6 的复杂任务的所有选项。
- 对于问题 1 和 2,我建议使用 BeautifulSoup。
- 对于 3 和 5,您可以使用 Selenium WebDriver(作为 python 库提供)。 使用 Selenium,您可以执行所有可能的操作(例如登录、更改下拉值、导航等),然后您可以通过 driver.page_source 访问 Web 内容(您可能需要使用睡眠功能等到内容已满)
- 对于 6,您可以使用他们自己的 API 来获取新闻提要列表和他们的 links(大多数返回的对象带有特定新闻提要的 link),获得 link 后,您可以使用 BeautifulSoup 获取网页内容。
注意:请在抓取之前阅读每个网站的条款和条件,因为其中一些提到自动数据收集是不道德的行为,我们作为专业人士不应这样做。
Scrapy 适合您。事实上,scrapy 框架是 python 抓取任务的行业标准。
顺便说一下:我建议您避免使用 JS 呈现:所有这些东西(chromedriver、selenium、phantomjs)都是抓取网站的最后选择。 大多数 ajax 数据您可以通过伪造所需的请求来简单地解析。 多花点时间在 Chrome 的 "network" 选项卡上。