我正在使用 scrapy 并使用 settings.py 中的 LOG_FILE= 将结果记录到日志文件中。然而我想要的是,每次运行蜘蛛时,它应该根据时间戳记录到不同的文件名。是否可以通过在settings.py中进行一些设置来实现这一点?
我怎样才能删除[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并且安装正确,但是当我想使用 scrapy 命令运行它时,它说
"No module named CFFI from FFI"
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?
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) 所以我有一些像这样的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 的直接子代的段落中的文本
我的 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)
如果这不是获取统计值的正确方法,那么我该怎么办?
在scrapy 爬行 [spider-name] 错误中中,OP 说
\n\n\n\n\n在我的项目的 Spider 文件夹中,我有两个名为 Spider1 和 Spider2\xe2\x80\xa6 的蜘蛛。现在,当我在根\n 项目文件夹中编写命令 scrapy scrapy Spider1 时,它会调用 Spider2.py 而不是 Spider1.py。当我从我的项目中删除spider2.py时,它会调用spider1.py
\n
我经历过完全相同的行为并使用了完全相同的解决方案。对OP的响应都归结为删除所有.pyc文件。
\n\n\n\n\n我已经清理了spider1.pyc,spider2.pyc和init.pyc。现在,当我在项目的根文件夹中运行\n scrapy scrapy Spider1 时,它实际上运行\n Spider2.py 但生成了 Spider1.pyc 文件而不是 Spider2.pyc
\n
我也看到过这种行为。
\n\n但文档没有提及所有这些问题和解决方法。\n https://doc.scrapy.org/en/latest/intro/tutorial.html
\n\n"name:标识Spider。在一个项目内必须是唯一的,即\xe2\x80\x99不能为不同的Spider设置相同的名称。"
\n\nhttps://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) 从下面的代码如何获取标题文本
<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 将篮球队的时间表保存到 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) 我尝试登录一些网站,但似乎他们不使用表单来显示登录对话框。所以当使用 FormRequest 时,我收到错误
\n\nraise ValueError("No <form> element found in %s" % response)\nRun 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) scrapy ×10
python ×8
python-2.7 ×2
dictionary ×1
html ×1
keyerror ×1
terminal ×1
web-scraping ×1