Вы должны иметь правильный отступ в коде
import scrapy
from scrapy.item import Item ,Field
class ErcessassignmentItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
link = Field()
Тогда в вашем пауке не используйте return
, ваш цикл for будет выполняться только один раз, и в CSV будет напечатана только 1 строка, вместо этого используйте yield
Во-вторых, где ваш код для размещения элементов в CSV? Я полагаю, вы используете скрап-способ хранения предметов по умолчанию,
если вы уже не знаете, запустите ваш скребок, как
scrapy crawl ercessSpider -o my_output.csv
Ваш код паука должен быть таким, обратите внимание на изменения, которые я сделал
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector # deprecated
from scrapy.selector import Selector
from ercessAssignment.items import ErcessassignmentItem
class MySpider(BaseSpider):
name ="ercessSpider"
allowed_domains =["site_url"]
start_urls = ["site_url"]
def parse(self, response):
hxs = Selector(response)
links = hxs.xpath("//p")
for linkk in links:
item = ErcessassignmentItem()
item["link"] = linkk.xpath("//a/@href").extract()
yield item