Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要Python Webscraping解决方案重新命名_Python_Web Scraping_Beautifulsoup_Scrapy_Urllib2 - Fatal编程技术网

需要Python Webscraping解决方案重新命名

需要Python Webscraping解决方案重新命名,python,web-scraping,beautifulsoup,scrapy,urllib2,Python,Web Scraping,Beautifulsoup,Scrapy,Urllib2,我想知道最好/首选的Python3.x解决方案是什么(执行速度快、易于实现、指定用户代理的选项、将浏览器和版本等发送到Web服务器以避免我的IP被列入黑名单),它可以在以下所有选项上刮取数据(根据我的理解,根据复杂性提及) 表/Div中包含数据的任何静态网页 一次完成加载的动态网页 动态网页,需要使用用户名密码登录并在登录后一次性完成加载。 用户名密码的示例URL: 动态网页需要使用oauth登录,oauth来自LinkedIn、google等流行服务,登录后一次完成加载。我知道这涉及一些页面重

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

  • 表/Div中包含数据的任何静态网页
  • 一次完成加载的动态网页
  • 动态网页,需要使用用户名密码登录并在登录后一次性完成加载。 用户名密码的示例URL:
  • 动态网页需要使用oauth登录,oauth来自LinkedIn、google等流行服务,登录后一次完成加载。我知道这涉及一些页面重定向、令牌处理等。 基于oauth的登录的示例URL:
  • 以上所有要点4都与选择某个下拉列表(比如“按日期排序”)的选项相结合,或者可以包括选择一些复选框,根据这些复选框显示的动态数据将发生变化。 我需要在执行复选框/下拉列表操作后刮取数据,因为任何用户都会这样做来更改动态数据的显示 示例URL- 您可以选择下拉菜单以及页面中的一些复选框
  • 带有Ajax加载的动态网页,其中的数据可以按照 =>6.1我们像facebook、twitter或linkedin主页一样不断向下滚动以获取数据 示例URL-facebook、twitter、链接等 =>6.2或者我们一直单击ajax容器末尾的某个按钮/div以获取下一组数据; 示例URL- 如果您需要查看和删除所有评论,请单击页面底部的“显示以前的评论”
  • 我想学习并构建一个精疲力竭的刮削解决方案,该解决方案可以根据需要进行调整,以满足从要点1的简单任务到上述要点6的复杂任务的所有选择

  • 我建议您使用BeautifulSoup解决问题1和问题2
  • 对于3和5,您可以使用SeleniumWebDriver(作为python库提供)。 使用Selenium,您可以执行所有可能的操作(例如登录、更改下拉值、导航等),然后您可以通过driver.page_源访问web内容(您可能需要使用sleep功能等待内容完全加载)
  • 对于6,您可以使用他们自己的API来获取新闻提要列表及其链接(大部分返回的对象附带指向特定新闻提要的链接),一旦获得链接,您就可以使用BeautifulSoup来获取web内容
  • 注意:请务必在抓取之前阅读每个网站的条款和条件,因为其中一些条款和条件提到自动数据收集是不道德的行为,我们不应该像专业人员那样做

    是为您寻找真正的可伸缩防弹解决方案而设计的。事实上,scrapy框架是python爬行任务的行业标准

    顺便说一下:我建议你避免JS渲染:所有这些东西(chromedriver、selenium、phantomjs)都是抓取站点的最后选择。 大多数ajax数据只需伪造所需请求即可解析。
    只需花更多时间在Chrome的“网络”选项卡上。

    感谢Kiruparan的建议。我同意现场条款和条件。我的主要目的是了解满足所有法规遵从性要求的web刮取。关于第6点的建议,虽然我知道所有这些网站(FB、LI twitter等)都允许通过API提取数据,但我想知道如果有人在没有API的情况下对第6点进行抓取,他们会如何做?不幸的是,除了社交媒体网站之外,我没有其他可以显示任务的示例网站。是的,您可以不使用API步骤,如下所示1)您需要使用selenium驱动程序作为以下驱动程序滚动页面。执行_脚本(“window.scrollTo(0,Y)”)2)让您的进程睡眠一段时间3)然后再次使用驱动程序获取当前高度。执行_脚本(“return document.body.scrollHeight”)4)继续此操作,直到高度保持不变。因此,如果我正确地得到了您的建议,你是说我问题中的第1点到第6点都可以由scrapy来处理&观察Chrome的网络标签上的请求?你的问题太宽泛了。没有人会帮助你重塑谷歌或必应。此外,处理需要身份验证但不使用传统HTTP身份验证机制的URL需要为站点定制代码。给我50万美元,我会写代码。