标签: scrapy

我无法从浏览器访问scrapyd端口6800

我在这方面搜索了很多,它可能有一个我想念的简单解决方案.

我在本地计算机和服务器上都设置了scrapy + scrapyd.当我尝试"scrapyd"时,它们都可以正常工作.

我可以毫无问题地部署到本地,我也可以从浏览器访问localhost:6800,我可以在本地运行蜘蛛.

在远程运行scrapyd后,我尝试部署到http:// remoteip:6800 /,就像我在本地部署一样,

我明白了

Packing version 1500333306
Deploying to project "projectX" in http://remoteip:6800/addversion.json
Deploy failed: <urlopen error [Errno 111] Connection refused>
Run Code Online (Sandbox Code Playgroud)

我也无法从我的本地PC 访问http:// remoteip:6800 /但我可以从远程PC上的ssh访问(有卷曲)

我在远程服务器上打开了入站和出站连接,我还缺少什么?

谢谢

python scrapy scrapyd

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

来自响应的Scrapy FormRequest AtrributeError:'str'对象没有属性'encoding'

我正在尝试使用Scrapy登录Facebook.

我已经确定Facebook的移动版本没有javascript,所以我正在使用它.

相关代码是

from loginform import fill_login_form
from scrapy.http import FormRequest

def parse(self, response):
    """Login to Facebook then pass on"""
    payload = fill_login_form(
        response.request.url,  # https://m.facebook.com
        response.body,
        self.login_user,
        self.login_pass
    )
    return FormRequest.from_response(
        response.request.url,
        formdata=payload,
        formid='login-form',
        callback=self.after_login
    )
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

File "/XXX/scraps/scraps/spiders/fb.py", line 44, in parse
    return FormRequest.from_response(response.request.url, formdata=payload, formid='login-form', callback=self.after_login)
  File "/XXX/venv/lib/python3.6/site-packages/scrapy/http/request/form.py", line 42, in from_response
    kwargs.setdefault('encoding', response.encoding)
AttributeError: 'str' object has no attribute 'encoding'
Run Code Online (Sandbox Code Playgroud)

Scrapy处于默认设置.

我希望我的蜘蛛登录m.facebook.com.我很确定这只是我的弱谷歌,但我无法确定,如何前进.

facebook login scrapy python-3.x

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

无法摆脱csv输出中的空行

我在python scrapy中编写了一个非常小的脚本来解析黄页网站上多个页面显示的名称,街道和电话号码.当我运行我的脚本时,我发现它运行顺利.但是,我遇到的唯一问题是数据在csv输出中被刮掉的方式.它总是两行之间的行(行)间隙.我的意思是:数据每隔一行打印一次.看到下面的图片,你就会明白我的意思.如果不是scrapy,我可以使用[newline =''].但是,不幸的是我在这里完全无助.如何摆脱csv输出中出现的空白行?提前谢谢你看看它.

items.py包括:

import scrapy

class YellowpageItem(scrapy.Item):
    name = scrapy.Field()
    street = scrapy.Field()
    phone = scrapy.Field()
Run Code Online (Sandbox Code Playgroud)

这是蜘蛛:

import scrapy

class YellowpageSpider(scrapy.Spider):
    name = "YellowpageSp"
    start_urls = ["https://www.yellowpages.com/search?search_terms=Pizza&geo_location_terms=Los%20Angeles%2C%20CA&page={0}".format(page) for page in range(2,6)]

    def parse(self, response):
        for titles in response.css('div.info'):
            name = titles.css('a.business-name span[itemprop=name]::text').extract_first()
            street = titles.css('span.street-address::text').extract_first()
            phone = titles.css('div[itemprop=telephone]::text').extract_first()
            yield {'name': name, 'street': street, 'phone':phone}
Run Code Online (Sandbox Code Playgroud)

以下是csv输出的样子:

在此输入图像描述

顺便说一句,我用来获取csv输出的命令是:

scrapy crawl YellowpageSp -o items.csv -t csv
Run Code Online (Sandbox Code Playgroud)

csv scrapy web-scraping python-3.x scrapy-spider

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

在Python Scrapy中将HTTP标头作为Float发送

我试图刮一个只在浮动形式的头文件中接受一些值的API,当我以字符串形式发送它时,它给出400 Bad Request,当我尝试以float形式发送头文件时scrapy给出如下错误:

self.headers = Headers(headers or {}, encoding=encoding)
File "C:\Python27\lib\site-packages\scrapy\http\headers.py", line 12, in __init__
super(Headers, self).__init__(seq)
File "C:\Python27\lib\site-packages\scrapy\utils\datatypes.py", line 193, in __init__
self.update(seq)
File "C:\Python27\lib\site-packages\scrapy\utils\datatypes.py", line 229, in update
super(CaselessDict, self).update(iseq)
File "C:\Python27\lib\site-packages\scrapy\utils\datatypes.py", line 228, in <genexpr>
iseq = ((self.normkey(k), self.normvalue(v)) for k, v in seq)
File "C:\Python27\lib\site-packages\scrapy\http\headers.py", line 27, in normvalue
return [self._tobytes(x) for x in value]
File "C:\Python27\lib\site-packages\scrapy\http\headers.py", line 40, in _tobytes
raise TypeError('Unsupported value type: {}'.format(type(x)))
TypeError: Unsupported value type: <type 'float'>
None
Run Code Online (Sandbox Code Playgroud)

任何人有任何解决方案或面临similer的问题吗?

python scrapy

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

如何使用Scrapy下载我所有的Quora答案?

我正在尝试使用Scrapy下载我的Quora答案,但似乎无法下载我的页面。使用简单

scrapy shell 'http://it.quora.com/profile/Ferdinando-Randisi'
Run Code Online (Sandbox Code Playgroud)

返回此错误

2017-10-05 22:16:52 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: quora)
2017-10-05 22:16:52 [scrapy.utils.log] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'quora.spiders', 'ROBOTSTXT_OBEY': True, 'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'SPIDER_MODULES': \[quora.spiders'], 'BOT_NAME': 'quora', 'LOGSTATS_INTERVAL': 0}
....
2017-10-05 22:16:53 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2017-10-05 22:16:53 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-10-05 22:16:53 [scrapy.core.engine] INFO: Spider opened
2017-10-05 22:16:54 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://it.quora.com/robots.txt> from <GET http://it.quora.com/robots.txt>
2017-10-05 22:16:55 [scrapy.core.engine] DEBUG: Crawled (429) <GET https://it.quora.com/robots.txt> (referer: None) …
Run Code Online (Sandbox Code Playgroud)

scrapy web-scraping quora

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

如何使用scrapy每晚刮掉数万个网址

我正在使用scrapy刮掉一些大品牌来导入我网站的销售数据.目前我正在使用

DOWNLOAD_DELAY = 1.5

CONCURRENT_REQUESTS_PER_DOMAIN = 16

CONCURRENT_REQUESTS_PER_IP = 16
Run Code Online (Sandbox Code Playgroud)

我使用Item加载器指定css/xpath规则和Pipeline将数据写入csv.我收集的数据是原价,销售价格,颜色,尺寸,名称,图片网址和品牌.

我只为一个拥有大约10万网址的商家写了蜘蛛,这需要我大约4个小时.

我的问题是,对于10k网址,4小时听起来是否正常,或者它应该比这更快.如果是这样,我还需要做些什么来加快速度.

我只在本地使用一个SPLASH实例进行测试.但在生产中我计划使用3个SPLASH实例.

现在主要问题是,我有大约125个商家和每个平均10k产品.他们中的一对有超过150k的网址.

我需要每晚清理所有数据以更新我的网站.由于我的单个蜘蛛花了4个小时来刮掉10k网址,我想知道每晚实现125 x 10k网址是否真的是有效的梦想

我将非常感谢您对我的问题的经验输入.

python scrapy scrapy-spider scrapy-pipeline scrapy-splash

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

Scrapinghub shub部署错误-错误:部署失败(400):项目:non_field_errors

当我尝试将其部署到云中并遇到以下错误时。

Error: Deploy failed (400):
project: non_field_errors
Run Code Online (Sandbox Code Playgroud)

我当前的设置如下。

def __init__(self, startUrls, *args, **kwargs):

    self.keywords = ['sales','advertise','contact','about','policy','terms','feedback','support','faq']

    self.startUrls = startUrls

    self.startUrls = json.loads(self.startUrls)

    super(MySpider, self).__init__(*args, **kwargs)

def start_requests(self):

    for url in self.startUrls:

        yield Request(url=url)
Run Code Online (Sandbox Code Playgroud)

scrapy python-2.7 scrapinghub

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

如何使用XPath提取href?

HTML结构是这样的:

<div class="image">
  <a target="_top" href="someurl">
    <img class="_verticallyaligned" src="cdn.translte" alt="">
  </a>
  <button class="dui-button -icon" data-shop-id="343170" data-id="14145140">
    <i class="dui-icon -favorite"></i>
  </button>
</div>
Run Code Online (Sandbox Code Playgroud)

提取文本的代码:

buyers = doc.xpath("//div[@class='image']/a[0]/text()")
Run Code Online (Sandbox Code Playgroud)

输出为:

[] 
Run Code Online (Sandbox Code Playgroud)

我做错什么了?

python xpath lxml scrapy

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

从不同的目录访问变量

我如何访问变量,var,在fileA中

if __name__ == "__main__":    
Run Code Online (Sandbox Code Playgroud)

在另一个文件中,fileB?我试过了:

import fileA    
from fileA import main
print (main.var)


import fileA
from fileA import var
print (var)

import fileA
from fileA import __name__
print (__name__.var)
Run Code Online (Sandbox Code Playgroud)

python scrapy

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

网页搜集-麦肯锡文章

我正在寻找文章标题。我不知道如何提取标题文本。您能否看下面我的代码并提出解决方案。

我是新手。感谢您的帮助!

网页的Web开发人员视图的屏幕快照 https://imgur.com/a/O1lLquY

import scrapy



class BrickSetSpider(scrapy.Spider):
    name = "brickset_spider"
    start_urls = ['https://www.mckinsey.com/search?q=Agile&start=1']

    def parse(self, response):
        for quote in response.css('div.text-wrapper'):
            item = {
                'text': quote.css('h3.headline::text').extract(),
            }
            print(item)
            yield item
Run Code Online (Sandbox Code Playgroud)

python scrapy web-scraping web

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