标签: scrapy

如何安排蜘蛛每 5 分钟运行一次?

几天来我一直在试图弄清楚如何安排我的 scrapy 蜘蛛,但没有任何运气。(我尝试了从 Windows 任务计划程序到 scrapy-do lib 的所有内容,但在我的MAIN.PY上没有任何效果)

(我的主要目标是安排我的蜘蛛每 5 分钟从我的蜘蛛NewsSpider收集数据到 mySQL news_db数据库)

请查看我的脚本,因为它有所修改,并根据需要进行更改。我真的希望这个能发挥作用。

主程序.PY

from scrapy import cmdline
cmdline.execute("scrapy crawl news".split())
Run Code Online (Sandbox Code Playgroud)

新闻_蜘蛛.PY

import scrapy
from ..items import WebspiderItem


class NewsSpider(scrapy.Spider):
    name = 'news'
    start_urls = [
        'https://www.coindesk.com/feed'
    ]

    def parse(self, response):
        pub_date = response.xpath('//pubDate/text()').extract()[0]
        page_title = response.xpath('//title/text()').extract()[2]
        page_summary = response.xpath('//description/text()').extract()[1]
        text_link = response.xpath('//link/text()').extract()[2]

        item = WebspiderItem()
        item['date'] = pub_date
        item['title'] = page_title
        item['summary'] = page_summary
        item['link'] = text_link

        yield item
Run Code Online (Sandbox Code Playgroud)

项目.PY

import scrapy


class WebspiderItem(scrapy.Item): …
Run Code Online (Sandbox Code Playgroud)

python scheduled-tasks scrapy scrapy-pipeline

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

Python Scrapy - 如何从另一个蜘蛛方法调用变量?

因此,我正在尝试学习 scrapy,对于学习项目,我想抓取该网站项目名称(仅来自 1 个类别 atm)https://www.killertools.com/Dent-Removal-Aluminum-Steel_c_11.html,然后输入这些项目网址并抓取描述文本。

我已经收到一些编写 2 个蜘蛛的建议,但我不知道如何从第一个蜘蛛的解析方法中的变量获取数据到第二个蜘蛛以填充 start_urls。

这就是我所在的地方:

import scrapy


class Names(scrapy.Spider):

    name = 'killernames'

    start_urls = ['https://www.killertools.com/Dent-Removal-Aluminum-Steel_c_11.html?viewall=1',]

    def parse(self, response):
        self.detail = response.xpath('//div[contains(@class, "product-item")]/div[@class="name"]/a/@href').getall()

        for item in response.xpath('//div[@class="name"]'):
            yield {
                'name': item.xpath('./a/text()').extract_first(),
                'url': item.xpath('./a/@href').extract_first(),
                 }

class Detail(scrapy.Spider):

    name = 'killerdetail'

    start_urls = []

    for item in self.detail: (I dont know how to get it from first spider)
        url = 'https://www.killertools.com/' + item
        start_urls.append(url)



    def parse(self, response):

        for item in response.xpath('//div[@itemprop="description"]'):
            yield {
                   'detail': item.xpath('./p/strong/text()').extract_first(),
                  }
Run Code Online (Sandbox Code Playgroud)

scrapy python-3.7

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

通过 scrapy 在以逗号分隔的一列中提取 Woocommerce 产品图像

我正在使用 scrapy 创建一个数据抓取器。要提取 woo-commerce 产品图像,我使用此命令

'img': response.css('figure.woocommerce-product-gallery__image a').attrib['href'],
Run Code Online (Sandbox Code Playgroud)

产品链接:https://royalprint.pk/product/name-print-superhero-sweatshirt-011/

但它只提取 csv 中的一个 img url

在此输入图像描述

我想将 Woocommerce 产品图片抓取到以逗号分隔的一列中。

请帮忙。问候

python scrapy web-scraping python-3.x woocommerce

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

命令“python setup.py Egg_info”在 C:\Users\ELYSSU~1\AppData\Local\Temp\pip-build-7ado9ytn\cryptography\ 中失败,错误代码为 1

我正在尝试在我的 Windows 系统中安装scrapy,但它向我显示以下错误:-

> Command "python setup.py egg_info" failed with error code 1 in C:\Users\ELYSSU~1\AppData\Local\Temp\pip-build-7ado9ytn\cryptography\
Run Code Online (Sandbox Code Playgroud)

python scrapy pycharm

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

Scrapy - AttributeError:类型对象“SettingsFrame”没有属性“ENABLE_CONNECT_PROTOCOL”

我在 Windows 上使用 Conda 环境。安装完后scrapy,我就开始试用了。我在启动 scrapy shell 时遇到问题。我输入scrapy shell "url"。我收到此错误消息:

(first_scrapy) C:\Users\jjang\Documents\GitHub\python_scrapy>scrapy shell "https://www.tutorialspoint.com/python/tk_entry.htm"
Traceback (most recent call last):
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\Scripts\scrapy-script.py", line 6, in <module>
    from scrapy.cmdline import execute
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\__init__.py", line 12, in <module>
    from scrapy.spiders import Spider
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\spiders\__init__.py", line 11, in <module>
    from scrapy.http import Request
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\http\__init__.py", line 11, in <module>
    from scrapy.http.request.form import FormRequest
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\http\request\form.py", line 16, in <module>
    from scrapy.utils.response import get_base_url
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\utils\response.py", line 14, in <module>
    from …
Run Code Online (Sandbox Code Playgroud)

python scrapy conda

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

Scrapy:如何在一次爬虫运行中将抓取的数据存储在不同的json文件中?

我正在使用通用蜘蛛程序,并在该字段中包含多个网址列表start_urls

是否可以json为每个 URL 导出一个文件?

据我所知,只能设置一个特定输出文件的路径。

任何解决此问题的想法都会受到奖励!

编辑:这是我的蜘蛛类:

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

class MySpider(CrawlSpider):
    name = 'my_spider'
    start_urls =  start_urls = ['www.domain1.com','www.domain2.com', 
   'www.domain3.com']


    custom_settings = {
                'FEED_EXPORT_ENCODING': 'utf-8',
                'DEPTH_LIMIT': '1',
                'FEED_URI': 'file:///C:/path/to/result.json',
    }

    rules = (
        Rule(LinkExtractor(allow=r"abc"), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        all_text = response.xpath("//p/text()").getall()

        yield {
            "text": " ".join(all_text),
            "url": response.url,
        }
Run Code Online (Sandbox Code Playgroud)

python scrapy web-scraping

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

Scrapy - 没有列表页面,但我知道每个项目页面的URL

我正在使用Scrapy来抓一个网站.我想要抓取的项目页面如下:http://www.somepage.com/itempage/&page=x.哪里x是任意数字1100.因此,我有一个SgmlLinkExractor规则,其中为任何类似于此的页面指定了回调函数.

该网站没有包含所有项目的列表页面,所以我想以某种方式很好地擦除这些网址(从)1100.这家伙在这里似乎有同样的问题,但无法弄清楚.

有没有人有办法解决吗?

python scrapy

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

Scrapy:如何更改图像名称

我正在使用scrapy来做一个项目.我在html中获得了图像名称和图像网址,如何用该名称而不是哈希名称命名此图像?

我得到了这个网址:http://a3.mzstatic.com/us/r1000/104/Purple/v4/55/35/20/55352022-0aba-260b-76ed-314eacd8c1fc/mzm.zqqzixix.175x175-75.jpg 它的名字:iBook我希望我的scrapy下载这张图片并用iBook重命名.

scrapy

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

Python抓取 - 请求更快

如果可能的话,我需要进行Web抓取请求并尽快完成响应.

我来自Java语言.我使用了两个"框架",并没有完全满足我的意图.

Jsoup请求/响应速度快,但穿不完整的数据,当页面有很多的信息.在Apache的HttpClient的正是这样相反的,可靠的数据,但速度很慢.

我查看了一些Python模块,我正在测试Scrapy.在我的搜索中,我无法断定它是否是最快的并且一致地提供数据,或者是否存在其他更好,更冗长或更难的数据.

其次,Python是一个很好的语言用于此目的?

先感谢您.

python web-crawler scrapy

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

Python的.strip()不会在if语句之外保存?

我有scrapy从网页中提取数据.我遇到的一个问题是它提取了很多空白,我选择使用其他人建议的.strip().我遇到了一个问题

if a.strip():
    print a
if b.strip():
    print b
Run Code Online (Sandbox Code Playgroud)

返回:

a1
b1
.
.
.
Run Code Online (Sandbox Code Playgroud)

但是这个:

if a.strip():
    aList.append(a)
if b.strip():
    bList.append(b)
print aList, bList
Run Code Online (Sandbox Code Playgroud)

返回此:

a1



    b1
Run Code Online (Sandbox Code Playgroud)

我试图用.strip()来模拟我删除的空白,但是你明白了.无论出于何种原因,它都会将空白添加到列表中,即使我告诉它不要.我甚至可以打印列表中的if语句,它也显示正常,但无论出于何种原因,当我决定外面打印if语句它不工作,我打算.

这是我的整个代码:

# coding: utf-8
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.exporter import CsvItemExporter
import re
import csv
import urlparse
from stockscrape.items import EPSItem
from itertools import izip

class epsScrape(BaseSpider):
        name = "eps"
        allowed_domains = ["investors.com"]
        ifile = open('test.txt', "r")
        reader = csv.reader(ifile)
        start_urls = []
        for row in …
Run Code Online (Sandbox Code Playgroud)

python stocks scrapy

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