Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 22, 2017 02:11:09

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Scrapy проблема с Rules

Доброго времени суток уважаемые форумчане, уже некоторое время разбираюсь с фреймворком для парсинга скрапи и возникла очень большая непонятность с правилами

 # -*- coding: utf-8 -*-
import scrapy
from testy.items import TestyItem
from scrapy.loader import ItemLoader
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
------------------------------------------------------
class TestyismySpider(CrawlSpider):
    name = "testyismy"
    allowed_domains = ["i"]
    start_urls = ['https://i']
   
    
    rules = (
                 Rule(LinkExtractor(
                 	restrict_xpaths =('//a[contains(text(),"Вперёд")][1]')),
                        callback = "parse_boobs",follow = True),
            )
    
    def parse_boobs(self, response):
    	    l = ItemLoader(item = TestyItem(),response = response)
    	    l.add_xpath('url','//h3/a[contains(@href,"threads")]/@href')
    	    return l.load_item()

этот код позволяет извлекать рекурсивно всю нужную мне информацию, но почему то только со 2 страницы, каким можно образом организовать сбор информации уже с первой страницы?

Отредактировано sl0w (Фев. 22, 2017 02:13:05)

Офлайн

#2 Фев. 22, 2017 20:05:27

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Scrapy проблема с Rules

переделал немного паука

 #-*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from scrapy.loader import ItemLoader
from testy.items import TestyItem
import re
class MvidSpider(CrawlSpider):
    name = 'mvid'
    allowed_domains = ['mvideo.ru']
    start_urls = ['http://www.mvideo.ru/gadzhety/smart-chasy-400']
    rules = (
        Rule(LinkExtractor(
                    restrict_xpaths ='//*[@class = "font-icon icon-right-open ico-pagination-next "]')),
        Rule(LinkExtractor(
                    restrict_xpaths ='//*[@class = "product-tile-title-link sel-product-tile-title"]'),
                    callback = "parse_item")
            )
    def parse_item(self, response):
        l = ItemLoader(item = TestyItem(),response = response)
        l.add_xpath('url','//h1/text()',re ='.[a-zA-Zа-яА-Я,.-]+')
        return l.load_item()
        

при записи в файл json , все русские буквы изображаются в виде символов


если посмотреть загрузку терминала, то можно заметить, что паук работает нормально


как можно преобразовать символьное представление в русский текст?

также прикреплю весь каталог с парсером в зипе

Отредактировано sl0w (Фев. 22, 2017 20:06:36)

Прикреплённый файлы:
attachment archive.zip (9,3 KБ)

Офлайн

#3 Фев. 23, 2017 06:23:50

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

Scrapy проблема с Rules

  
>>> import json
>>> 
>>> json.dumps('["абвг"]')
'"[\\"\\u0430\\u0431\\u0432\\u0433\\"]"'
>>> 
>>> json.dumps('["абвг"]', ensure_ascii=False)
'"[\\"абвг\\"]"'
>>>



Отредактировано py.user.next (Фев. 23, 2017 06:24:03)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version