需要 Python 网络抓取解决方案建议



我想知道什么是最好/首选的PYTHON 3.x解决方案(快速执行,易于实现,指定用户代理的选项,将浏览器和版本等发送到Web服务器以避免我的IP被列入黑名单(,它可以抓取以下所有选项的数据(根据我的理解,根据复杂性提及(。

  1. 任何在表格/div中包含数据的静态网页
  2. 动态网页,一次性完成加载
  3. 动态网页,需要使用用户名密码登录,并在我们登录后一次性完成加载。 用户名密码的示例 URL:https://dashboard.janrain.com/signin?dest=http://janrain.com
  4. 动态网页,需要从LinkedIn,google等流行服务中使用oauth登录,并在我们登录后一次性完成加载。我知道这涉及一些页面重定向、令牌处理等。 基于 oauth 的登录的示例 URL:https://dashboard.janrain.com/signin?dest=http://janrain.com
  5. 上面的所有项目符号 4 都与选择某些下拉列表的选项(例如"按日期排序"(相结合,或者可能涉及选择一些复选框,根据这些复选框,显示的动态数据将发生变化。 我需要在执行复选框/下拉列表操作后抓取数据,因为任何用户都会这样做来更改动态数据的显示 示例网址 - https://careers.microsoft.com/us/en/search-results?rk=l-seattlearea 您可以选择下拉菜单以及页面中的一些复选框
  6. 具有 Ajax 加载功能的动态网页,其中数据可以保持加载方式 => 6.1 我们像Facebook,Twitter或LinkedIn主页一样向下滚动以获取数据 示例网址 - 脸书、推特、链接等 => 6.2 或者我们继续单击 Ajax 容器末尾的一些按钮/div 以获取下一组数据; 示例网址 - https://www.linkedin.com/pulse/cost-climate-change-indian-railways-punctuality-more-editors-india-/在这里,您必须单击页面底部的"显示以前的评论",如果您需要查看并抓取所有评论

我想学习并构建一个耗尽的抓取解决方案,可以根据需要进行调整以满足从项目符号点 1 的简单任务到上面项目符号点 6 的复杂任务的所有选项。

  1. 我建议使用BeautifulSoup来解决你的问题1和2。
  2. 对于 3 和 5,您可以使用 Selenium WebDriver(作为 python 库提供(。 使用Selenium,您可以执行所有可能的操作(例如登录,更改下拉值,导航等(,然后您可以通过driver.page_source访问Web内容(您可能需要使用sleep功能等待内容完全加载(
  3. 对于 6,您可以使用自己的 API 来获取新闻提要及其链接的列表(大多数返回的对象带有指向特定新闻提要的链接(,一旦获得链接,您就可以使用 BeautifulSoup 获取 Web 内容。

注意:请在抓取之前阅读每个网站的条款和条件,因为其中一些人提到自动数据收集是不道德的行为,我们不应该以专业的方式这样做。

如果您正在寻找真正的可扩展防弹解决方案,Scrapy 适合您。事实上,scrapy 框架是 python 爬网任务的行业标准。

顺便说一句:我建议你避免JS渲染:所有这些东西(chromedriver,selenium,phantomjs(都是抓取网站的最后一个选项。 大多数 ajax 数据只需伪造所需的请求即可解析。 只需在Chrome的"网络"标签上花费更多时间即可。

最新更新