【python3】scrapyを用いた「リンクを指定してクローリング、スクレイピング」ができません。
スクレイピングの勉強を始めて1週間ほどの初心者です。
Webサイトを参考に勉強しているのですが、以下のようなエラーメッセージが表示され、解決方法がわかりません。
どなたか教えていただけると幸いです。
発生している問題・エラーメッセージ
ValueError: Missing scheme in request url: /author/Albert-Einstein
sample_detail.py
python3
1import scrapy 2from sample.items import SampleDetailItem 3 4 5class SampleDetailSpider(scrapy.Spider): 6 name = 'sample_detail' 7 allowed_domains = ['quotes.toscrape.com'] 8 start_urls = ['http://quotes.toscrape.com/'] 9 10 11 def parse(self, response): 12 for quote in response.css("div.quote"): 13 item = SampleDetailItem() 14 item["quote"] = quote.css("span.text::text").extract_first() 15 item["author"] = quote.css("small.author::text").extract_first() 16 yield scrapy.Request( 17 quote.css('a::attr(href)').extract_first(), 18 callback=self.parse_detail, 19 meta={'item': item} 20 ) 21 22 print(item) 23 24 25 def parse_detail(self, response): 26 item = response.meta['item'] 27 item['author_birth'] = response.css('div autor_details span.author-born-date ::text').extract_first() 28 yield item
items.py
python3
1import scrapy 2 3class SampleDetailItem(scrapy.Item): 4 # define the fields for your item here like: 5 # name = scrapy.Field() 6 quote = scrapy.Field() 7 author = scrapy.Field() 8 author_birth = scrapy.Field() 9 pass
試したこと
・yield scrapy.Requestで返したURLが不正である。
という記事のurljoinメソッドを用いた方法を試してみたのですが、
「TypeError: Cannot mix str and non-str arguments」というエラーが出ます。
・urllib.parseを用いた方法も調べましたが、使い方がわかりませんでした。
補足情報
python 3.9.0
Scrapy 2.4.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/03 02:15