标签: scrapy

Scrapy 基于日志文件时间戳的动态文件名

我正在使用 scrapy 并使用 settings.py 中的 LOG_FILE= 将结果记录到日志文件中。然而我想要的是,每次运行蜘蛛时,它应该根据时间戳记录到不同的文件名。是否可以通过在settings.py中进行一些设置来实现这一点?

scrapy

0
推荐指数
1
解决办法
1319
查看次数

使用 strip() 删除空格

我怎样才能删除[u'\n\n\n result here \n\n\n'] 并得到结果[u'result here']...我正在使用 scrapy

def parse_items(self, response):
  str = ""
  hxs = HtmlXPathSelector(response)

  for titles in titles:
      item = CraigslistSampleItem()
      item ["job_id"] = (id.select('text()').extract() #ok
      items.append(item)
  return(items)
end
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

python scrapy

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

FFI 中没有名为 CFFI 的模块

我对 Python 很陌生。我安装scrapy并且安装正确,但是当我想使用 scrapy 命令运行它时,它说

"No module named CFFI from FFI"
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

python scrapy python-2.7

0
推荐指数
1
解决办法
2万
查看次数

scrapy新手:教程dmozItem不支持字段:标题

import scrapy
from tutorial.items import DmozItem

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        for sel in response.xpath('//ul/li'):
            item = DmozItem()
            item['title'] = sel.xpath('a/text()').extract()
            item['link'] = sel.xpath('a/@href').extract()
            item['desc'] = sel.xpath('text()').extract()
            yield item
Run Code Online (Sandbox Code Playgroud)

最近在学习Scrapy。当我测试教程时。我只是从文档中复制代码,但效果不佳,显示错误:

Traceback (most recent call last):
File "C:\Python27\lib\site-packages\scrapy\utils\defer.py", line 102, in iter_errback
yield next(it)
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\offsite.py", line 28, in process_spider_output
for x in result:
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\referer.py", line 22, in <genexpr>
return (_set_referer(r) for r in result or ())
File …
Run Code Online (Sandbox Code Playgroud)

python scrapy

0
推荐指数
1
解决办法
2049
查看次数

Python scrapy,如何只获取直接子级

所以我有一些像这样的html

<div class="content">
    <div class="infobox">
        <p> text </p>
        <p> more text </p>
    </div>
    <p> text again </p>
    <p> even more text </p>
</div>
Run Code Online (Sandbox Code Playgroud)

我正在使用这个选择器,'.content p::text'我认为这只会给我直接的孩子,所以我希望它能够提取“再次文本”和“更多文本”,但它也从另一个 div 内的段落中获取文本,我怎样才能防止这种情况发生,我只想要来自类 .content 的 div 的直接子代的段落中的文本

html python css-selectors scrapy

0
推荐指数
1
解决办法
6296
查看次数

无法从 Scrapy stats 字典中获取值

我的 scrapy 中有这个管道,我需要从 Scrapy 统计信息中获取信息

class MyPipeline(object):

    def __init__(self, stats):
        self.stats = stats

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.stats)

    def process_item(self, item, spider):           
        print self.stats.get_stats()['item_scraped_count']
        return item
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我收到此错误

Traceback (most recent call last):
  File "D:\Kerja\HIT\PYTHON~1\<project_name>\<project_name>\lib\site-packages\twisted\internet\defer.py", line 649, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "D:\Kerja\HIT\Python Projects\<project_name>\<project_name>\<project_name>\<project_name>\pipelines.py", line 35, in process_item
    print self.stats.get_stats()['item_scraped_count']
KeyError: 'item_scraped_count'
Run Code Online (Sandbox Code Playgroud)

如果这不是获取统计值的正确方法,那么我该怎么办?

python dictionary scrapy keyerror scrapy-pipeline

0
推荐指数
1
解决办法
686
查看次数

Scrapy爬行错误的蜘蛛

scrapy 爬行 [spider-name] 错误中中,OP 说

\n\n
\n

在我的项目的 Spider 文件夹中,我有两个名为 Spider1 和 Spider2\xe2\x80\xa6 的蜘蛛。现在,当我在根\n 项目文件夹中编写命令 scrapy scrapy Spider1 时,它会调用 Spider2.py 而不是 Spider1.py。当我从我的项目中删除spider2.py时,它会调用spider1.py

\n
\n\n

我经历过完全相同的行为并使用了完全相同的解决方案。对OP的响应都归结为删除所有.pyc文件。

\n\n
\n

我已经清理了spider1.pyc,spider2.pyc和init.pyc。现在,当我在项目的根文件夹中运行\n scrapy scrapy Spider1 时,它实际上运行\n Spider2.py 但生成了 Spider1.pyc 文件而不是 Spider2.pyc

\n
\n\n

我也看到过这种行为。

\n\n

但文档没有提及所有这些问题和解决方法。\n https://doc.scrapy.org/en/latest/intro/tutorial.html

\n\n

"name:标识Spider。在一个项目内必须是唯一的,即\xe2\x80\x99不能为不同的Spider设置相同的名称。"

\n\n

https://doc.scrapy.org/en/1.0/topics/spiders.html#scrapy.spiders.Spider \n"name: \n定义此蜘蛛的名称的字符串。蜘蛛名称是蜘蛛的位置(并由 Scrapy 实例化),因此它必须是唯一的。但是,没有什么可以阻止您实例化同一蜘蛛的多个实例。这是最重要的蜘蛛属性,并且\xe2\x80\x99s 是必需的。”

\n\n

这是有道理的,所以 Scrapy 知道要运行哪个蜘蛛,但它 \xe2\x80\x99s 不工作,那么 \xe2\x80\x99s 缺少什么?谢谢。

\n\n

编辑\n好吧,所以又发生了。这是我的回溯:

\n\n
(aishah) malikarumi@Tetuoan2:~/Projects/aishah/acquire$ scrapy crawl crawl_h4\nTraceback (most recent call last):\nFile "/home/malikarumi/Projects/aishah/bin/scrapy", line 11, in <module>\nsys.exit(execute())\nFile "/home/malikarumi/Projects/aishah/lib/python3.5/site-packages/scrapy …
Run Code Online (Sandbox Code Playgroud)

python scrapy

0
推荐指数
1
解决办法
1589
查看次数

如何在Python中获取锚标记的标题属性的文本值?

从下面的代码如何获取标题文本

<td class="col_name" nowrap="nowrap">
<a class="icon" title="refer me">
<img src="https://edu.au/images/icons/silk/vcard.gif" align="top" 
alt="Add to address book">
</a>
Mrs Cal <span class="hl_fcc">B</span>AREN
</td>
Run Code Online (Sandbox Code Playgroud)

即,请参考我..在Python中使用scrapy?请问有人可以回答这个问题吗?我尝试了response.css('td.col-name a::attr(text)').extract()..但我得到了“[]”

scrapy python-2.7

0
推荐指数
1
解决办法
1697
查看次数

Scrapy Spider 不保存数据

我正在尝试使用 Scrapy 将篮球队的时间表保存到 CSV 文件中。我在这些文件中编写了以下代码:

设置.py

BOT_NAME = 'test_project'

SPIDER_MODULES = ['test_project.spiders']
NEWSPIDER_MODULE = 'test_project.spiders'

FEED_FORMAT = "csv"
FEED_URI = "cportboys.csv"

# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'test_project (+http://www.yourdomain.com)'

# Obey robots.txt rules
ROBOTSTXT_OBEY = True
Run Code Online (Sandbox Code Playgroud)

khsabot.py

import scrapy


class KhsaabotSpider(scrapy.Spider):
    name = 'khsaabot'
    allowed_domains = ['https://scoreboard.12dt.com/scoreboard/khsaa/kybbk17/?id=51978']
    start_urls = ['http://https://scoreboard.12dt.com/scoreboard/khsaa/kybbk17/?id=51978/']

def parse(self, response):
    date = response.css('.mdate::text').extract()
    opponent = response.css('.opponent::text').extract()
    place = response.css('.schedule-loc::text').extract()


    for item in zip(date,opponent,place):
        scraped_info = {
            'date' : item[0], …
Run Code Online (Sandbox Code Playgroud)

python terminal scrapy web-scraping scrapy-spider

0
推荐指数
1
解决办法
803
查看次数

如何使用scrapy登录没有form元素的scrapy

我尝试登录一些网站,但似乎他们不使用表单来显示登录对话框。所以当使用 FormRequest 时,我收到错误

\n\n
raise ValueError("No <form> element found in %s" % response)\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么在这种情况下我该如何使用 scrapy 登录呢?

\n\n

我尝试在这个网站中找到一个表单元素(使用 chrome devtool 和 xpath //form ),但结果为零

\n\n

它的登录元素是

\n\n
<div class="loginModalBody">\n            <div class="coverLoginModal">\n                <p class="loginModalTitle">Login </p>\n\n                    <div class=""><p class="login-msg"></p></div>\n\n                    <!-- Email -->\n                    <div class="loginCoverInputText">\n                        <input class="loginInputText" id="email-login" role="presentation" autocomplete="off" type="email" name="loginEmail" placeholder="E-mail">\n                        <span class="loginNameInputText">E-mail</span>\n                        <span class="loginLineInputText"></span>\n                        <!-- Error email -->\n                        <div class="dontEnterEmail loginErrorInput"><p class="loginError">Vui l\xc3\xb2ng nh\xe1\xba\xadp email<span class="loginIconError"></span></p></div>\n                        <div class="loginEmailInvalid loginErrorInput"><p class="loginError">Invalid email<span class="loginIconError"></span></p></div>\n                    </div>\n\n                    <!-- Password -->\n                    <div class="loginCoverInputText">\n                        <input …
Run Code Online (Sandbox Code Playgroud)

python scrapy

0
推荐指数
1
解决办法
1656
查看次数