сильный текст Мой код, основанный на примерах, которые я искал, не работал должным образом, поэтому я решил использовать работающую модель, найденную на github: https://github.com/scrapy/quotesbot/blob/master/quotesbot/spiders/toscrape-xpath.py Затем я слегка изменил ее, чтобыпродемонстрировать то, с чем я сталкиваюсь.Приведенный ниже код отлично работает, как и предполагалось, но моя конечная цель - передать очищенные данные из первого «parse» во вторую функцию «parse2», чтобы я мог объединить данные с 2 разных страниц.Но сейчас я хотел начать очень просто, чтобы я мог следить за тем, что происходит, отсюда и сильно раздетый код, приведенный ниже.
# -*- coding: utf-8 -*-
import scrapy
from quotesbot.items import MyItems
from scrapy import Request
class ToScrapeSpiderXPath(scrapy.Spider):
name = 'toscrape-xpath'
start_urls = [
'http://quotes.toscrape.com/',
]
def parse(self, response):
item = MyItems()
for quote in response.xpath('//div[@class="quote"]'):
item['tinfo'] =
quote.xpath('./span[@class="text"]/text()').extract_first()
yield item
but then when I modify the code as below:
# -*- coding: utf-8 -*-
import scrapy
from quotesbot.items import MyItems
from scrapy import Request
class ToScrapeSpiderXPath(scrapy.Spider):
name = 'toscrape-xpath'
start_urls = [
'http://quotes.toscrape.com/',
]
def parse(self, response):
item = MyItems()
for quote in response.xpath('//div[@class="quote"]'):
item['tinfo'] =
quote.xpath('./span[@class="text"]/text()').extract_first()
yield Request("http://quotes.toscrape.com/",
callback=self.parse2, meta={'item':item})
def parse2(self, response):
item = response.meta['item']
yield item
У меня есть только один элемент, который помечен, а остальные - дубликаты.Похоже, что parse2 даже не читается.Я играл с отступом и скобками, думая, что мне не хватает чего-то простого, но без особого успеха.Я просмотрел множество примеров, чтобы понять, могу ли я понять, в чем может быть проблема, но я все еще не могу заставить ее работать.Я уверен, что это очень простая проблема для этих гуру, поэтому я кричу "Помогите!"кто-нибудь!
также мой файл items.py выглядит так, как показано ниже, и я думаю, что эти два файла items.py и toscrape-xpath.py - единственные в действии, насколько я могу судить, так как я совсем новичок ввсе это.
# -*- coding: utf-8 -*-`enter code here`
# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class QuotesbotItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
pass
class MyItems(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
tinfo = scrapy.Field()
pass
Большое спасибо всем, кто может вам помочь
# -*- coding: utf-8 -*-
import scrapy
from quotesbot.items import MyItems
from scrapy import Request
class ToScrapeSpiderXPath(scrapy.Spider):
name = 'toscrape-xpath'
start_urls = [
'http://quotes.toscrape.com/',
]
def parse(self, response):
item = MyItems()
for quote in response.xpath('//div[@class="quote"]'):
item =
{'tinfo':quote.xpath('./span[@class="text"]/text()').extract_first()}
**yield response.follow**('http://quotes.toscrape.com', self.parse_2,
meta={'item':item})
def parse_2(self, response):
print "almost there"
item = response.meta['item']
yield item