私はScrapyを初めて使用し、Pythonも初めてです。論文のタイトル、リンク、記事の説明をWebページからのRSSフィードのようにほとんど抽出するスクレーパーを作成して、論文を作成しようとしています。次のスクレーパーを作成しました。実行して.txtとしてエクスポートすると、空白になります。アイテムローダーを追加する必要があると思いますが、前向きではありません。
Items.py
from scrapy.item import Item, Field
class NorthAfricaItem(Item):
title = Field()
link = Field()
desc = Field()
pass
クモ
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from northafricatutorial.items import NorthAfricaItem
class NorthAfricaItem(BaseSpider):
name = "northafrica"
allowed_domains = ["http://www.north-africa.com/"]
start_urls = [
"http://www.north-africa.com/naj_news/news_na/index.1.html",
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//ul/li')
items = []
for site in sites:
item = NorthAfricaItem()
item['title'] = site.select('a/text()').extract()
item['link'] = site.select('a/@href').extract()
item['desc'] = site.select('text()').extract()
items.append(item)
return items
アップデート
助けてくれたTalvalinに感謝し、さらにいくつかの混乱で問題を解決することができました。オンラインで見つけたストックスクリプトを使用していました。しかし、シェルを利用すると、必要なものを取得するための正しいタグを見つけることができました。私は結局:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from northafrica.items import NorthAfricaItem
class NorthAfricaSpider(BaseSpider):
name = "northafrica"
allowed_domains = ["http://www.north-africa.com/"]
start_urls = [
"http://www.north-africa.com/naj_news/news_na/index.1.html",
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//ul/li')
items = []
for site in sites:
item = NorthAfricaItem()
item['title'] = site.select('//div[@class="short_holder"] /h2/a/text()').extract()
item['link'] = site.select('//div[@class="short_holder"]/h2/a/@href').extract()
item['desc'] = site.select('//span[@class="summary"]/text()').extract()
items.append(item)
return items
誰かがここで何かを見たら、私は間違ったことを知らせてください......しかしそれは機能します。