Scrapy.org - Таблицы - PullRequest
       3

Scrapy.org - Таблицы

0 голосов
/ 24 февраля 2020

Я пытаюсь очистить все таблицы от этой сети: "https://www.zoznamspravcov.sk/cake_administrator/publishedAdministrators/view/1".

Мой хромой код пока:

import scrapy

class MindopSpider(scrapy.Spider):
    name = 'MD'
    start_urls = ['https://www.zoznamspravcov.sk/cake_administrator/publishedAdministrators/view/1/']

def parse(self, response):      
    panel = response.css('div.administrators.view')
    tables = response.css('table')

    for table in tables:
        head = table.css('h2::text').extract()      
        trs = table.css('tr')       
        for tr in trs:
            rows = table.css('td::text').extract()
        yield {'Head':head,'Rows':rows }

В финале я бы как таблицы с их именами и данными. Кто-нибудь может мне помочь? Большое спасибо:)

1 Ответ

1 голос
/ 25 февраля 2020

Я не учился Scrapy, но я бы использовал другую библиотеку. Как насчет попробовать следующее решение? Сначала вам нужно установить эту библиотеку, pip install -U simpified_scrapy

from simplified_scrapy import Spider, SimplifiedDoc, SimplifiedMain
class MindopSpider(Spider):
  name = 'MD'
  allowed_domains = ['zoznamspravcov.sk/']
  start_urls = ['https://www.zoznamspravcov.sk/cake_administrator/publishedAdministrators/view/1']
  # refresh_urls = True # For debug. If efresh_urls = True, start_urls will be crawled again.

  def extract(self, url, html, models, modelNames):
    doc = SimplifiedDoc(html)
    doc['html']=doc.replaceReg(doc.html,'</th>\s*<td','</td><td') # Correct HTML tags
    blocks = doc.selects('div.administrators view>div|table')
    datas = []
    for block in blocks:
        obj = {'rows':[]}
        obj['head']=block.h2.text
        rows = block.tbody.trs
        for row in rows:
            obj['rows'].append([c.text for c in row.tds])
        datas.append(obj)
    print( datas)
    return {"Urls": None, "Data": datas} # Return the data to the framework, and the framework will automatically save it.

SimplifiedMain.startThread(MindopSpider()) # Start
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...