Это мой первый проект Scrapy Spider. Я новичок в Python, поэтому, пожалуйста, прости мое невежество. В основном, я хочу почистить изображения со страницы www.doritos.com/products/. Я собираюсь использовать эти изображения для проекта по обнаружению объектов, поэтому я строю свой учебный набор данных. Вот код на данный момент:
import scrapy
from scrapy.contrib.spiders import Rule, CrawlSpider
from scrapy.contrib.linkextractors import LinkExtractor
from doritos.items import DoritosItem
class DoritosSpider(CrawlSpider):
name = 'doritos'
allowed_domains = ['doritos.com']
start_urls = ['https://www.doritos.com']
rules = [Rule(LinkExtractor(allow=['/products/.*']), 'parse_doritos')]
def parse_doritos(self, response):
image = DoritosItem()
image['title'] = response.xpath(["//img[@id='alt'/text()"]).extract()
rel = response.xpath('//product_thumbnail/@src').extract()
image['image_urls'] = ['http:'+rel[0]]
return image
Я проверил эти ссылки, чтобы попытаться собрать воедино ответ на мой вопрос.
Я не удивлюсь, если ответ там, но мой код достаточно отличается от того, где мне действительно трудно понять это:
scrapy: URL-адрес запроса должен быть str или Unicode получил список
Аргумент должен быть в байтах или юникоде, список получен
TypeError: аргумент 1 должен быть объектом строки или Unicode
Аргумент должен быть байтами или юникодом, получил '_Element'
Насколько я понимаю из этих ссылок, мне нужно преобразовать аргумент в моей функции в строку. Вот скриншот трассировки, показывающий ошибку:
Ошибка трассировки SCRAPY
Я думаю, что это вторая строка функции parse_doritos, но я не могу понять, как это исправить. Если кто-то может помочь мне разобраться с этим, мне бы очень хотелось: а) заставить эту штуку работать, и б) понять, где я ошибся и почему ваше исправление работает.