标签: scrapy

无头浏览器和抓取 - 解决方案

我正在尝试为浏览器自动测试套件和能够抓取的无头浏览器平台列出可能的解决方案列表.


浏览器测试/清除:

  • Selenium - 浏览器自动化中的多语言旗舰,Python,Ruby,JavaScript,C#,Haskell等的绑定,用于Firefox的IDE(作为扩展),用于更快的测试部署.可以充当服务器并具有大量功能.

JAVASCRIPT

  • PhantomJS - JavaScript,带有屏幕捕获和自动化的无头测试,使用Webkit.从版本1.8开始,实现了Selenium的WebDriver API,因此您可以使用任何WebDriver绑定,并且测试将与Selenium兼容
  • SlimerJS - 与PhantomJS类似,使用Gecko(Firefox)代替WebKit
  • CasperJS - 基于PhantomJS和SlimerJS构建的JavaScript具有额外的功能
  • Ghost驱动程序 - 用于PhantomJSWebDriver Wire协议的JavaScript实现.
  • 新的 PhantomCSS - CSS回归测试.CasperJS模块,用于使用PhantomJS和 Resemble.js自动进行可视化回归测试.
  • WebdriverCSS -插件为 Webdriver.io自动化视觉回归测试
  • 新的 PhantomFlow - 通过测试描述和可视化用户流.Web用户界面测试的实验方法.
  • new trifleJS - 将PhantomJS API移植到使用Internet Explorer引擎.
  • 新的 CasperJS IDE (商业)

Node.js的

  • Node-phantom - 填补了PhantomJSnode.js之间的空白
  • WebDriverJs - Selenium团队对node.js的Selenium WebDriver绑定
  • WD.js - WebDriver/Selenium 2的节点模块
  • yiewd - …

selenium scrapy web-scraping phantomjs casperjs

362
推荐指数
3
解决办法
7万
查看次数

无法在Mac OS x 10.9上安装Lxml

我想安装Lxml,然后我可以安装Scrapy.

当我今天更新我的Mac时它不会让我重新安装lxml,我收到以下错误:

In file included from src/lxml/lxml.etree.c:314:
/private/tmp/pip_build_root/lxml/src/lxml/includes/etree_defs.h:9:10: fatal error: 'libxml/xmlversion.h' file not found
#include "libxml/xmlversion.h"
         ^
1 error generated.
error: command 'cc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用brew来安装libxml2和libxslt,两者都安装得很好但我仍然无法安装lxml.

上次我安装时我需要在Xcode上启用开发人员工具,但由于它更新到Xcode 5,它不再给我这个选项了.

有谁知道我需要做什么?

python macos xcode lxml scrapy

233
推荐指数
10
解决办法
9万
查看次数

"OSError 10.11(El Capitan)中安装Scrapy时出现"OSError:[Errno 1]操作不允许"(系统完整性保护)

我正在尝试通过pip在OSX 10.11(El Capitan)中安装Scrapy Python框架.安装脚本会下载所需的模块,并在某些时候返回以下错误:

OSError: [Errno 1] Operation not permitted: '/tmp/pip-nIfswi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下命令停用OSX 10.11中的无根功能:

sudo nvram boot-args="rootless=0";sudo reboot
Run Code Online (Sandbox Code Playgroud)

但是当机器重新启动时我仍然会遇到同样的错误.

来自我的StackExchangers同事的任何线索或想法?

如果有帮助,则完整脚本输出如下:

sudo -s pip install scrapy
Collecting scrapy
  Downloading Scrapy-1.0.2-py2-none-any.whl (290kB)
    100% |????????????????????????????????| 290kB 345kB/s 
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scrapy)
Collecting w3lib>=1.8.0 (from scrapy)
  Downloading w3lib-1.12.0-py2.py3-none-any.whl
Collecting lxml (from scrapy) …
Run Code Online (Sandbox Code Playgroud)

python macos scrapy python-2.7

205
推荐指数
11
解决办法
20万
查看次数

scrapy可以用来从使用AJAX的网站上抓取动态内容吗?

我最近一直在学习Python,并且正在努力构建一个web-scraper.它根本没什么特别的; 它的唯一目的是从博彩网站获取数据并将这些数据放入Excel.

大多数问题都是可以解决的,而且我有一点点混乱.但是,我在一个问题上遇到了巨大的障碍.如果网站加载了马匹表并列出了当前的投注价格,则此信息不在任何源文件中.线索是这些数据有时是有效的,数字显然是从某个远程服务器更新的.我的电脑上的HTML只是一个漏洞,他们的服务器正在推动我需要的所有有趣的数据.

现在我对动态网页内容的体验很低,所以这件事让我无法理解.

我认为Java或Javascript是一个关键,这经常会弹出.

刮刀只是一种赔率比较引擎.有些网站有API,但我需要这些API.我正在使用Python 2.7的scrapy库

如果这个问题太开放,我真的很抱歉.简而言之,我的问题是:如何使用scrapy来抓取这些动态数据,以便我可以使用它?这样我就可以实时抓取这个赔率数据?

javascript python ajax screen-scraping scrapy

137
推荐指数
5
解决办法
11万
查看次数

BeautifulSoup和Scrapy爬虫之间的区别?

我想建立一个网站,显示亚马逊和电子海湾产品价格之间的比较.哪个更好,为什么?我对BeautifulSoup有点熟悉,但与Scrapy爬虫不太相似.

python beautifulsoup web-crawler scrapy

128
推荐指数
3
解决办法
6万
查看次数

如何在scrapy spider中传递用户定义的参数

我试图将用户定义的参数传递给scrapy的蜘蛛.任何人都可以建议如何做到这一点?

我在-a某处读到了一个参数,但不知道如何使用它.

python web-crawler scrapy

91
推荐指数
4
解决办法
5万
查看次数

如何使用PyCharm来调试Scrapy项目

我正在使用Python 2.7开发Scrapy 0.20.我发现PyCharm有一个很好的Python调试器.我想用它来测试我的Scrapy蜘蛛.有人知道怎么做吗?

我试过了什么

实际上我试图将蜘蛛作为一个脚本运行.结果,我构建了这个脚本.然后,我尝试将我的Scrapy项目添加到PyCharm作为这样的模型:

File->Setting->Project structure->Add content root.
Run Code Online (Sandbox Code Playgroud)

但我不知道还有什么需要做的

python debugging scrapy pycharm python-2.7

90
推荐指数
5
解决办法
3万
查看次数

pip无法正确安装包:权限被拒绝错误

我正在尝试安装lxml以在我的Mac上安装scrapy(v 10.9.4)

??ishaantaylor@Ishaans-MacBook-Pro.local ~
???  pip install lxml
Downloading/unpacking lxml
  Downloading lxml-3.4.0.tar.gz (3.5MB): 3.5MB downloaded
  Running setup.py (path:/private/var/folders/8l/t7tcq67d34v7qq_4hp3s1dm80000gn/T/pip_build_ishaantaylor/lxml/setup.py) egg_info for package lxml
    /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'
      warnings.warn(msg)
    Building lxml version 3.4.0.
    Building without Cython.
    Using build configuration of libxslt 1.1.28

    warning: no previously-included files found matching '*.py'
Installing collected packages: lxml
  Running setup.py install for lxml
    /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'
      warnings.warn(msg)
    Building lxml version 3.4.0.
    Building without Cython.
    Using build configuration of libxslt 1.1.28
    building 'lxml.etree' …
Run Code Online (Sandbox Code Playgroud)

python macos lxml pip scrapy

83
推荐指数
2
解决办法
21万
查看次数

硒与scrapy动态页面

我正在尝试使用scrapy从网页上抓取产品信息.我的待删节网页如下所示:

  • 从包含10个产品的product_list页面开始
  • 点击"下一步"按钮加载下10个产品(两个页面之间的网址不变)
  • 我使用LinkExtractor跟踪每个产品链接到产品页面,并获得我需要的所有信息

我试图复制next-button-ajax-call但是无法正常工作,所以我试试了selenium.我可以在一个单独的脚本中运行selenium的webdriver,但我不知道如何与scrapy集成.我应该把硒部分放在我的scrapy蜘蛛里?

我的蜘蛛非常标准,如下所示:

class ProductSpider(CrawlSpider):
    name = "product_spider"
    allowed_domains = ['example.com']
    start_urls = ['http://example.com/shanghai']
    rules = [
        Rule(SgmlLinkExtractor(restrict_xpaths='//div[@id="productList"]//dl[@class="t2"]//dt'), callback='parse_product'),
        ]

    def parse_product(self, response):
        self.log("parsing product %s" %response.url, level=INFO)
        hxs = HtmlXPathSelector(response)
        # actual data follows
Run Code Online (Sandbox Code Playgroud)

任何想法都表示赞赏.谢谢!

python selenium scrapy web-scraping selenium-webdriver

74
推荐指数
1
解决办法
7万
查看次数

如何在单个Scrapy项目中为不同的蜘蛛使用不同的管道

我有一个包含多个蜘蛛的scrapy项目.有什么方法可以定义哪些管道用于哪个蜘蛛?并非我所定义的所有管道都适用于每个蜘蛛.

谢谢

python web-crawler scrapy

72
推荐指数
7
解决办法
2万
查看次数