Я пытаюсь закодировать скребок с помощью Scrapy для Python. На этом этапе я пытаюсь получить имя веб-страницы и всех исходящих ссылок внутри страницы. Вывод должен быть словарем как этотКак перебрать элемент ответа в Scrapy?
{'link': [u'Link1'], 'title': [u'Page title']}
Я создал этот код:
from scrapy.spider import Spider
from scrapy import Selector
from socialmedia.items import SocialMediaItem
class MySpider(Spider):
name = 'smm'
allowed_domains = ['*']
start_urls = ['http://en.wikipedia.org/wiki/Social_media']
def parse(self, response):
items =[]
for link in response.xpath("//a"):
item = SocialMediaItem()
item['title'] = link.xpath('text()').extract()
item['link'] = link.xpath('@href').extract()
items.append(item)
yield items
Может кто-нибудь помочь мне, чтобы получить этот результат? Я скорректировал код с этой страницы http://mherman.org/blog/2012/11/05/scraping-web-pages-with-scrapy/
обновление кода без устаревших функций. Большое вам спасибо!
Дани
Спасибо alecxe. Я получаю эту ошибку, когда я использую «yield» 2014-11-28 18: 31: 30 + 0100 [smm] ОШИБКА: Паук должен вернуть Request, BaseItem или None, получил «список» в. При использовании «return» он не дает никаких ошибок, но ничего не сохраняет в файле. Как бы вы использовали средство выделения ссылок? Я обновил код. –
@ DaniValverde, пожалуйста, используйте точный метод 'parse(), который я предоставил, - не приведет к ошибке. – alecxe
Спасибо alecxe, по какой-то причине он дал ошибку в первый раз, когда я ее использовал. –