Я следую этому примеру для очистки новостного веб-сайта. Когда я проверяю тип, возвращаемый в его случае, это scrapy.selector.unified.SelectorList.
В моем случае, поскольку интересующие данные заключенный в теги , мне удалось извлечь и проанализировать его в форме List с помощью приведенного ниже кода Python.
fetch('https://newswebsite.com/news/national')
data = re.findall("{.@graph.
#convert list to string before converting to json
jsonData = json.loads(''.join(data))
После возврата списка я не могу продолжать следовать примеру для реализации загрузчиков элементов
Не могли бы вы подсказать мне, что такое Python? концепции используются в приведенном ниже коде, чтобы я мог ознакомиться с ним и адаптировать его к своему варианту использования?
Пытаюсь понять, что делает цикл for..
from itemloaders.processors import TakeFirst, MapCompose
from scrapy.loader import ItemLoader
class ChocolateProductLoader(ItemLoader):
default_output_processor = TakeFirst()
price_in = MapCompose(lambda x: x.split("£")[-1])
url_in = MapCompose(lambda x: 'https://www.chocolate.co.uk' + x )
import scrapy
from chocolatescraper.itemloaders import ChocolateProductLoader
from chocolatescraper.items import ChocolateProduct
class ChocolateSpider(scrapy.Spider):
# The name of the spider
name = 'chocolatespider'
# These are the urls that we will start scraping
start_urls = ['https://www.chocolate.co.uk/collections/all']
def parse(self, response):
products = response.css('product-item')
for product in products:
chocolate = ChocolateProductLoader(item=ChocolateProduct(), selector=product)
chocolate.add_css('name', "a.product-item-meta__title::text")
chocolate.add_css('price', 'span.price', re='\n Sale price(.*)')
chocolate.add_css('url', 'div.product-item-meta a::attr(href)')
yield chocolate.load_item()
next_page = response.css('[rel="next"] ::attr(href)').get()
if next_page is not None:
next_page_url = 'https://www.chocolate.co.uk' + next_page
yield response.follow(next_page_url, callback=self.parse)
Подробнее здесь: https://stackoverflow.com/questions/790 ... em-loaders
Мобильная версия