技术文章类别

 所有技术文章

  • 从脚本运行scrapy,不包括管道

    实际上需要调用get_project_settings,在已发布的代码中传递给爬虫的Settings对象将为你提供默认值,而不是你的特定项目设置。你需要编写如下内容: from scrapy.utils.project import get_project_settings settings = get_project_settings crawler = Crawlersettings

  • GtkWarning:无法打开显示

    首先,你没有指定服务器上是否安装了桌面环境(或X)? 无论如何,你可以使用xvfb以下命令为spider实现无头设置: Xvfb或X虚拟帧缓冲区是实现X11显示服务器协议的显示服务器。与其他显示服务器相比,Xvfb在内存中执行所有图形操作,而不显示任何屏幕输出。从客户端的角度来看,它的行为与任何其他X显示服务器完全一样,可以处理请求并适当地发送事件和错误。但是,未显示任何输出。该虚拟服

  • 在python 3.5中安装scrapy时出错

    你尝试安装scrapy在python解释器中,则应在终端中安装该软件包。而且,安装的一项要求scrapy是python 2.7,而你正在使用python 3.5 更新: 好消息:Python 3即将成为Scrapy,你可以立即尝试pip install scrapy==1.1.0rc1。请注意,仍然存在一些限制,但是不久s

  • 已安装Scrapy,但不会从命令行运行

    如果没有sudo,pip将安装到$ HOME .local bin,$ HOME .local lib等中。将以下行添加到〜 .bashrc或〜 .profile(或其他shell的适当位置)中: export PATH="${PATH}:${HOME}.localbin" 然后打开一个新终端或重新加载.bashrc,它应该找到命令。 b

  • 在python中遍历字典并去除空白

    在字典理解中(在Python = 2.7中可用): clean_d = { k:v.strip for k, v in d.iteritems} Python 3.X: clean_d = { k:v.strip for k, v in d.items} d

  • 从scrapy.selector导入选择器错误

    尝试改为导入HtmlXPathSelector。 from scrapy.selector import HtmlXPathSelector 然后使用.select()方法解析出你的html。例如, sel = HtmlXPathSelectorresponse site_names = sel.select'

  • 用Scrapy抓取Ajax页面?

    我解决了。 # -*- coding: utf-8 -*- import scrapy from v4.items import Product class GardenaCoopBricoLoisirsSpiderscrapy.Spider: name = "Gardena_Coop_Brico_Loisirs_py" start_urls = [ 'http

  • 如何以正确的顺序导入Scrapy项目密钥?

    我可以使它起作用的唯一方法是以下列方式使用此解决方案。 我的items.py档案: from scrapy.item import Item, Field from collections import OrderedDict from types import FunctionType class StaticOrderHelpertype: # Req

  • 数据库插入失败,没有错误且抓取

    你发布的代码对我来说不起作用: TypeError: __init__ takes exactly 2 arguments 1 given 这是因为该__init__方法需要一个table_name未传递的参数。你需要from_crawler在管道对象中实现class方法,例如:

  • Empty .json file

    你应该将print语句更改为yield: import scrapy class HackerItemscrapy.Item: #declaring the item hackertitle = scrapy.Field class HackerSpiderscrapy.Spider: name = 'hackernewscra

  • 带子项的XPath文本

    XPath通常无法选择不存在的内容。这些东西在你的HTML中不存在: [ 'This is a link', 'This is another link.' ] 从概念上讲,它们可能存在于更高的抽象级别上,即浏览器对源代码的呈现,但严格来说,即使它们是分开的,例如在颜色和功能上也是如此。 在DOM级别上,只有单独的文本节点,并且XPath可以

  • Scrapy-抓取时发现抓取链接

    对于通过解析找到的每个链接,你都可以请求它,并使用其他函数来解析内容: class MySpiderscrapy.Spider: name = "myspider" start_urls = [ ..... ] def parseself, response: rows = response.css'table.apas_tbl tr'.extrac

  • BeautifulSoup和Scrapy之间的区别?

    Scrapy是一个Web-spider或Web scraper框架,你为Scrapy提供一个根URL以开始爬网,然后你可以指定要爬网和获取的URL数量的限制。它是用于Web 爬网或爬网的完整框架。 而 BeautifulSoup是一个解析库,它在从URL提取内容方面也做得很好,并且允许你轻松解析其中的某些部分。它只会获取你提供的URL的内容,然后停止。除非你使用某些条件将其手动放入无限循环内,否则它不会爬网。

  • scrapy-解析分页的项目

    你有两种选择可以解决你的问题。一般的做法是使用yield来生成新请求return。这样,你可以从单个回调中发出多个新请求。 在你的情况下,可能有一个更简单的解决方案:只需从这样的模式中生成启动urs列表: class MySpiderBaseSpider: start_urls = ['http:example.comfoo

  • 动态更改IP地址?

    使用Scrapy的方法将利用两个组件,RandomProxy和RotateUserAgentMiddleware。 修改DOWNLOADER_MIDDLEWARES如下。你将必须在中插入新组件settings.py: DOWNLOADER_MIDDLEWARES = { 'scrapy

  • Scrapy-同时记录到文件和stdout,带有spider名称

    你要使用ScrapyFileLogObserver。 import logging from scrapy.log import ScrapyFileLogObserver logfile = open'testlog.log', 'w' log_observer = ScrapyFileLogObserverlogfile, level=logging.DEBUG log_o

  • 加快抓取速度

    这里是一些可以尝试的事情: 使用最新的scrapy版本(如果尚未使用) 检查是否使用了非标准中间件 尝试增加CONCURRENT_REQUESTS_PER_DOMAIN,CONCURRENT_REQUESTS设置(docs) 关闭日志记录LOG_ENABLED = False(docs) 尝试yield循环输入项目,

  • Scrapy:如何在Spider中使用项目以及如何将项目发送到管道?

    如何使用蜘蛛网中的物品? 好吧,项目的主要目的是存储你爬网的数据。scrapy.Items基本上是字典。要声明你的物品,你将必须创建一个类并添加一个类scrapy.Field: import scrapy class Productscrapy.Item: url = scrapy.Field

  • 了解Scrapy中的回调

    对于蜘蛛,抓取周期经历如下过程: 首先,生成初始请求以爬网第一个URL,然后指定要调用的回调函数,并从这些请求中下载响应。 要执行的第一个请求是通过调用 start_requests(默认情况下)Request为方法中指定的URL 生成start_urls的parse方法以及作为请求的回调函数的

  • 为什么我的Scrapy CrawlSpider规则不起作用?

    这是一个效果很好的scraper: from scrapy.contrib.spiders import CrawlSpider,Rule from scrapy.selector import HtmlXPathSelector from scrapy.http import Request from scrapySpider.items import SPage from scrapy.contrib.lin

  • 如何设置Scrapy来处理验证码

    有很多解决方案是一个非常深入的话题。但是,如果你想应用在帖子中定义的逻辑,则可以使用scrapy Downloader Middlewares。 就像是: class CaptchaMiddlewareobject: max_retries = 5 def process_responserequest, response, spider: if not

  • ImportError:使用Scrapy时没有名为win32api的模块

    尝试这个。 pip install pypiwin32

  • 动态start_urls

    start_urlsclass属性包含起始网址-仅此而已。如果你要提取其他网页的网址,parse请使用[another]回调从相应的回调请求中获取收益: class SpiderBaseSpider: name = 'my_spider' start_urls = [ 'http:

  • 如何保存Scrapy抓取命令输出

    你还需要重定向stderr。你仅重定向标准输出。你可以像这样以某种方式重定向它: scrapy crawl someSpider -o some.json -t json 2 some.text 密钥是数字2,它“选择” stderr作为重定向源。 如果要将stderr和stdout都重定向到一个文件中,可以使用: scrapy

  • 未知命令:抓取错误

    你应该scrapy crawl spider_name在scrapy.cfg文件所在的scrapy项目文件夹中运行命令。 从文档: `Crawling 为了使我们的spider工作,请转到项目的顶级目录并运行: `scrapy crawl dmoz``

  • 设置scrapy shell请求的标头

    当前没有直接在cli上添加标头的方法,但是你可以执行以下操作: $ scrapy shell ... ... from scrapy import Request req = Request'yoururl.com', headers={"header1":"value1"} fetchreq

  • Scrapy:AttributeError:'列表'对象没有属性'iteritems'

    这是由链接的scraper’s settings:引起的: ITEM_PIPELINES = ['linkedIn.pipelines.LinkedinPipeline'] 但是,根据doc,ITEM_PIPELINES这应该是一个命令: 要激活Item Pipeline组件,必须将其类添加到ITEM_PIPELINES设置中,如以下示例所示:

  • 当项目获得空字段时,如何重试请求n次?

    你可以使用Custom Retry Middleware来做到这一点,你只需要覆盖process_response当前Retry Middleware的方法即可: from scrapy.downloadermiddlewares.retry import RetryMiddleware from scrapy.utils.respon

  • Get scrapy抓取整个网站

    要抓取整个网站,你应该使用CrawlSpider而不是scrapy.Spider 这是一个例子 为了你的目的,请尝试使用如下所示的内容: import scrapy from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor class MySpide

  • 如何禁用或更改ghostdriver.log的路径?

    使用PhantomJS驱动程序时,请添加以下参数: driver = webdriver.PhantomJSservice_log_path='varlogphantomjsghostdriver.log' 相关代码,虽然可以选择关闭日志功能,但似乎还不支持: selenium webdriver phantomjs service.

  • 使用Scrapy进行NTLM身份验证以进行网络抓取

    我能够弄清楚发生了什么。 1:这被视为“ DOWNLOADER_MIDDLEWARE”,而不是“ SPIDER_MIDDLEWARE”。 DOWNLOADER_MIDDLEWARES = { 'test.ntlmauth.NTLM_Middleware': 400, } 2:我尝试使用的中间件需要进行重大修改。这对我有用:

  • 如何编写一个DownloadHandler以便于通过socksipy发出请求的scrapy?

    做了之后pip install txsocksx,我需要更换scrapy的ScrapyAgent使用txsocksx.http.SOCKS5Agent。 我只是复制代码HTTP11DownloadHandler,并ScrapyAgent从scrapycored

  • 使用Tor代理与scrapy

    You can use this middleware to have a random user agent every request the spider makes. # You can define a user USER_AGEN_LIST in your settings and the spider will chose a random user agent from that list every time.

  • 找不到Scrapy Spider错误

    确保已设置spider网的“名称”属性。例: class campSpiderBaseSpider: name = 'campSpider' 如果没有name属性,那么抓痒的经理将无法找到你的spider。

  • 如何删除Scrapy Spider数据中的空白

    事实证明,数据中还存在许多空格,因此结合Steven的回答和更多研究后,数据就可以删除所有标记,行返回和重复的空格。工作代码如下。请注意,在加载程序行上添加了text(),它删除了标记,并且split and join处理器删除了空格和行返回。 def parseself, response: items = [] l = XPathItemLoaderitem=Greenh

  • CrawlerProcess与CrawlerRunner

    Scrapy的文档在给出两者的实际应用示例方面做得非常糟糕。 CrawlerProcess假设scrapy是唯一使用twisted反应堆的东西。如果你在python中使用线程来运行其他代码,则并非总是如此。让我们以此为例。 from scrapy.crawler import CrawlerProcess import scrapy def notThreadSafe

  • 在收到一定数量的请求后,如何阻止scrapy spider?

    有一个内置设置CLOSESPIDER_PAGECOUNT,可以通过命令行-s参数传递或更改设置:scrapy crawl spider -s CLOSESPIDER_PAGECOUNT=100 一个小警告是,如果启用了缓存,它将缓存命中数也计入页数。

  • Scrapy:存储数据

    你可以通过scrapy crawl -h在项目目录中键入来查看可用命令的列表。 scrapy crawl spidername -o items.json -t json -o 指定转储项目的输出文件名(items.json) -t 指定转储项目的格式(json) c

  • 如何获取scrapy队列中的请求数?

    这花了我一段时间才能弄清楚,但这是我使用的: self.crawler.engine.slot.scheduler 那是调度程序的实例。然后,你可以调用__len__它的方法,或者如果你只需要对等待的请求为true false,请执行以下操作: self.crawler.engine.scheduler_cl

  • 如何克服Javascript的“ onclick”按钮来抓取网页?

    首先,检查所需的数据是否已经存在-在html中(它在背景中-在那里)。 另一种选择是selenium:: from selenium import webdriver import time browser = webdriver.Firefox browser.get"http:www.prudential.com.hkPruServlet?module=fundpur