需要Python Webscraping解决方案建议

时间:2018-07-03 10:53:19

标签: python web-scraping beautifulsoup scrapy urllib2

我想知道什么是最好的/首选的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主页一样不断向下滚动以获取数据 示例网址-Facebook,Twitter,链接等 => 6.2或我们继续单击ajax容器末尾的一些按钮/ div以获取下一组数据; 范例网址-https://www.linkedin.com/pulse/cost-climate-change-indian-railways-punctuality-more-editors-india-/ 如果您需要查找和刮擦所有评论,请在此处单击页面底部的“显示以前的评论”

我想学习并构建一种精疲力尽的刮擦解决方案,可以根据需要在需要时对其进行调整,以适应从项目符号1的简单任务到项目符号6的复杂任务的所有选项。

2 个答案:

答案 0 :(得分:0)

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

注意:认罪在抓取之​​前确实阅读了每个网站的条款和条件,因为其中一些提到自动数据收集是不道德的行为,我们不应该这样做。

答案 1 :(得分:0)

Scrapy非常适合您在寻找真正的可扩展防弹解决方案。实际上,scrapy框架是python抓取任务的行业标准。

顺便说一句:我建议您避免JS渲染:所有这些东西(chromedriver,selenium,phantomjs)是爬网网站的最后一个选择。 您可以简单地通过伪造所需的请求来解析大多数ajax数据。 只需在Chrome的“网络”标签上花费更多时间即可。