私はscrapyを使用してスパイダーを作成しました。ダウンロードリンクを(python)リストに保存しようとしていますので、後でdownloadlist[1]
を使用してリストエントリを呼び出すことができます。URLをリストに解析する
しかし、治療は、リストではなくアイテムとしてURLを保存します。各URLをリストに追加する方法はありますか?
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider
from scrapy.http import Request
import scrapy
from scrapy.linkextractors import LinkExtractor
DOMAIN = 'some-domain.com'
URL = 'http://' +str(DOMAIN)
linklist = []
class subtitles(scrapy.Spider):
name = DOMAIN
allowed_domains = [DOMAIN]
start_urls = [
URL
]
# First parse returns all the links of the website and feeds them to parse2
def parse(self, response):
hxs = HtmlXPathSelector(response)
for url in hxs.select('//a/@href').extract():
if not (url.startswith('http://') or url.startswith('https://')):
url= URL + url
yield Request(url, callback=self.parse2)
# Second parse selects only the links that contains download
def parse2(self, response):
le = LinkExtractor(allow=("download"))
for link in le.extract_links(response):
yield Request(url=link.url, callback=self.parse2)
print link.url
# prints list of urls, 'downloadlist' should be a list but isn't.
downloadlist = subtitles()
print downloadlist
'downloadlist'がリストでない場合、それは何ですか? –
私はそれが治療のドキュメントによると、リクエストオブジェクトである可能性があると思います。 'downloadlist [3]'を印刷しようとすると、TypeError、 'subtitles'オブジェクトはインデックス作成をサポートしていません。 – LuukS
なぜ 'downloadlist'を引数として渡して、必要な場所に要素を追加しませんか? –