技术文章类别

 所有技术文章

  • 避免重复爬网

    我相信你正在寻找的是“持久性支持”,以暂停和恢复爬网。 要启用它,你可以执行以下操作: scrapy crawl somespider -s JOBDIR=crawlssomespider-1

  • 如何在python的scrapy选择器中仅提取文本

    h1[@class='state'] 在上面的xpath中,你正在选择h1具有class属性的标签state 所以这就是为什么它选择所有进入的东西 h1 element 如果你只想选择h1标签文本,则只需 pre

  • 在Cron工作中Scrapy

    我解决了这个问题,包括进入bash文件的PATH #!binbash cd myfoldercrawlers PATH=$PATH:usrlocalbin export PATH scrapy crawl my_spider_name

  • 如何强制scrapy爬行重复的URL?

    你可能正在寻找关于的dont_filter=True论点Request。

  • Scrapy中提供sqlite管道的示例代码吗?

    我做了这样的事情: # # Author: Jay Vaughan # # Pipelines for processing items returned from a scrape. # Dont forget to add pipeline to the ITEM_PIPELINES setting # See: http:doc.scrapy.orgtopicsitem-pipeline.html

  • 在1个网站上并行运行多个Spiders?

    我认为你正在寻找的是这样的: import scrapy from scrapy.crawler import CrawlerProcess class MySpider1scrapy.Spider: # Your first spider definition ... class MySpider2scrapy.Spider: # Your second spider def

  • 如何使用scrapy爬行多个页面?

    参见scrapy Request结构,要抓取此类链,你将必须使用如下所示的callback参数: class MySpiderBaseSpider: ... # spider starts here def parseself, response: ... # A, D, E are done in parallel, A - B -

  • 使用python无限滚动的爬网站点

    这是对我有用的简短代码: SCROLL_PAUSE_TIME = 20 # Get scroll height last_height = driver.execute_script"return document.body.scrollHeight" while True: # Scroll down to bottom driver.execute_script"window.scr

  • httplib.BadStatusLine:”

    基于Python Doc,httplib.BadStatusLine如果服务器响应我们无法理解的HTTP状态代码则引发。你可以尝试传递此异常。如果要调用多个URL,则不应关闭驱动程序。 尝试这个: def parseself, response: try: print response.status print '??????

  • 如何将头添加到Scrapy CrawlSpider请求?

    可以使用参数REFERER手动传递给每个请求headers: yield Requestparse=..., headers={'referer':...} RefererMiddleware 做同样的事情,自动从先前的响应中获取引用网址。

  • scrapy如何设置引荐来源网址

    如果你想在Spider的请求中更改引荐来源网址,则可以DEFAULT_REQUEST_HEADERS在settings.py文件中进行更改: DEFAULT_REQUEST_HEADERS = { 'Referer': 'http:www.google.com' }

  • 使用带有Scrapy的CSS选择器获取href

    你正在寻找的是: Link = Link1.css'span[class=title] a::attrhref'.extract[0] 由于你还匹配了span“ class”属性,因此你甚至可以编写 Link = Link1.css'span.title a::attrhref'.extract

  • 抓取下一页

    你rule未使用,因为你没有使用CrawlSpider。 因此,你必须requests手动创建下一页,如下所示: # -*- coding: utf-8 -*- import scrapy from scrapy.contrib.spiders import Rule from scrapy.linkextractor

  • scrapy中的每个请求之间如何给延迟?

    DOWNLOAD_DELAY 默认: 0 从同一网站下载连续页面之前,下载程序应等待的时间(以秒为单位)。这可以用来限制爬网速度,以避免对服务器造成太大的冲击。 DOWNLOAD_DELAY = 0.25 # 250 ms of delay

  • 从文件抓取读取URL列表到抓取?

    你很近。 f = open"urls.txt" start_urls = [url.strip for url in f.readlines] f.close …最好还是使用上下文管理器来确保文件按预期关闭: with open"urls.txt", "rt" as f: start_urls = [url.str

  • 如何使用Python Scrapy模块列出我网站上的所有URL?

    这是为我工作的python程序: from scrapy.selector import HtmlXPathSelector from scrapy.spider import BaseSpider from scrapy.http import Request DOMAIN = 'example.com' URL = 'http:%s' % DOMAIN class MySpiderBaseSpide

  • 通过Scrapy进行身份验证时爬行的LinkedIn

    class LinkedPySpiderBaseSpider: 应该: class LinkedPySpiderInitSpider:

  • Scrapy CrawlSpider用于AJAX内容

    在这里,spider可能太有限了。如果你需要大量逻辑,通常最好从Spider继承。 Scrapy提供了CloseSpider异常,当你需要在某些情况下停止解析时,可以引发该异常。你正在爬网的页面返回一条消息“你的库存中没有焦点文章”,当你超过最大页面数时,你可以检查此消息并在发生此消息时停止迭代。 在你的情况下,你可以执行以下操作: from scrapy.spider imp

  • 使用Scrapy抓取Python数据

    基本上,你有很多工具可供选择: scrapy beautifulsoup lxml mechanize requests and grequests selenium ghost.py 这些工具具有不同的用途,但可以根据任务将它们

  • 可以用pyspider代替Scrapy吗?

    pyspider和Scrapy具有相同的目的,即网页抓取,但对此目的的看法不同。 spider永远都不要停止,直到WWW死了。(信息被改变,数据在网站更新,蜘蛛应该有刮最新数据的能力和责任。这就是为什么pyspider具有URL数据库,强大的调度,@every,age,等..) pyspider比框架更能提供服务。(组件在隔离的进程中运

  • 向Scrapy Spider传递URL列表以通过.txt文件进行抓取

    使用以下-a选项运行你的spider: scrapy crawl myspider -a filename=text.txt 然后__init__使用Spider方法读取文件并定义start_urls: class MySpiderBaseSpider:

  • Scrapy:在方法之间传递项目

    有一个名为meta Request 的参数: yield Requesturl, callback=self.detail, meta={'item': item} 然后在function中detail,以这种方式访问​​它: item = response.meta['item']

  • Scrapy start_urls

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

  • 在scrapy spider中访问会话cookie

    一个经典的例子是拥有一个登录服务器,该服务器在成功登录后会提供一个新的会话ID。这个新的会话ID应该与另一个请求一起使用。 这是从源代码中挑选的代码,似乎对我有用。 print 'cookie from login', response.headers.getlist'Set-Cookie'[0].split";"[0].split"="[1]

  • 请求网址中缺少方案

    更改start_urls为: self.start_urls = ["http:www.bankofwow.com"]

  • Scrapy CSS选择器:获取所有内部标签的文本

    response.css'mytag *::text' 在*将访问的所有内部标签mytag,并::text会得到他们每个人的文字

  • 在python Scrapy中执行SplashRequest时添加等待元素

    是的,你可以编写一个Lua脚本来做到这一点。像这样: function mainsplash splash:set_user_agentsplash.args.ua assertsplash:gosplash.args.url -- requires Splash 2.3 while not splash:select'.my-element' do splash

  • 使用scrapyd有什么优势?

    通过方便的Web API,Scrapyd允许你在不同于正在使用的计算机上的另一台计算机上运行scrapy,这意味着你可以curl甚至使用网络浏览器上传新项目版本并运行它们。否则,如果你想在某个地方的云中运行Scrapy,则必须scp复制新的spider代码,然后使用登录ssh并生成你的scrapy crawl myspider。 如果你要并行运行许多spider,Scrapyd

  • 启动lua脚本进行多次点击和访问

    我破解了一个可行的解决方案。首先,我们需要Lua脚本是可变的,因此我们将其设为一个函数: def scriptn: _script = """ function mainsplash local url = splash.args.url local href = "" assertsplash:gourl

  • 使用scrapy获取URL列表,然后在这些URL中抓取内容

    我目前无法测试,所以请告诉我这是否对你有用,因此如果有任何错误,我可以对其进行编辑。 这里的想法是,我们在首页中找到每个链接,并通过将你的产品解析方法作为回调传递新的scrapy请求 import scrapy from urllib.parse import urljoin class ProductsSpiderscrapy.Spider: name = "products"

  • 超链接和“筛选的异地请求”

    你需要修改自己的yield Request in parse以parse2用作其回调。 编辑:allowed_domains不应包含http前缀,例如: allowed_domains = ["boliga.dk"] 尝试一下,看看你的spider是否仍然可以正常运行,而不是co

  • 了解CrawlSpider中如何使用规则

    rules属性CrawlSpider指定如何从页面提取链接以及应为这些链接调用哪些回调。它们由parse该类中实现的默认方法处理。 因此,每当你要触发URL规则时,只需要产生一个scrapy.Requesturl, self.parse,Scrapy引擎就会向该URL发送一个请求并将规则应用于响应。 链接的提取(可能使用或可能

  • Scrapy暂停/恢复如何工作?

    为了能够暂停和继续抓取搜索,可以运行以下命令来开始搜索: scrapy crawl somespider --set JOBDIR=crawl1 要停止搜索,你应该运行Ctrl-C,但是你只需要运行一次,然后等待scrapy停止,如果你运行Ctrl-C两次,它将无法正常工作。 然后你可以通过再次运行以下命令来恢复搜索: sc

  • Scrapy:使用start_requests()的正确方法是什么?

    从文档中start_requests,覆盖start_requests意味着start_urls将忽略中定义的url 。 这是Scrapy调用的方法,当未指定任何特定URL时打开抓取工具抓取蜘蛛。如果指定了特定的URL,则使用make_requests_from_url()来创建请求。 […] 如果要更改用于开

  • 抓取写入到csv文件

    只需使用抓取即可-o csv,例如: scrapy crawl spider name -o file.csv -t csv

  • 无法顺利通过表格

    我会使用FormRequest.from_response哪个为您完成所有工作,因为您仍然可能会错过一些字段: from scrapy.spider import BaseSpider from scrapy.selector import HtmlXPathSelector from scrapy.http import FormRequest, Request from rob

  • 登录Scrapy

    对于日志记录,我将其放在蜘蛛类上: class SomeSpiderscrapy.Spider: configure_logginginstall_root_handler=False logging.basicConfig filename='log.txt', format='%levelnames: %messages', l

  • Running Multiple spiders in scrapy

    从OS级别一次运行两个scrapy脚本可能是最容易的。它们都应该能够保存到同一数据库。创建一个shell脚本来同时调用这两个scrapy脚本: scrapy runspider foo scrapy runspider bar 确保使用以下命令使该脚本可执行 chmod +x script_name 要每6小时安排一次c

  • Scrapy-从表中提取项目

    需要稍微更正你的代码。由于你已经选择了表中的所有元素,因此无需再次指向表。因此,你可以将xpath缩短为此类td[1]text。 def parse_productsself, response: products = response.xpath'*[@id="Year1"]tabletr' # ignore the table header

  • Scrapy安装失败,错误为“无法打开包括:'openssl / aes.h'

    安装不同的python应用程序时出现相同的错误。我缺少OpenSSL开发包,解决方法是: sudo apt-get install libssl-dev