私はScrapy
に新規で、ウェブサイトのクロールを練習するためにそれを使用しようとします。しかし、チュートリアルで提供されたコードに従っても、結果は返されません。 yield scrapy.Request
が動作しないようです。私のコードは以下の通りです:yield scrapy.Requestはタイトルを返さない
Import scrapy
from bs4 import BeautifulSoup
from apple.items import AppleItem
class Apple1Spider(scrapy.Spider):
name = 'apple'
allowed_domains = ['appledaily.com']
start_urls =['http://www.appledaily.com.tw/realtimenews/section/new/']
def parse(self, response):
domain = "http://www.appledaily.com.tw"
res = BeautifulSoup(response.body)
for news in res.select('.rtddt'):
yield scrapy.Request(domain + news.select('a')[0]['href'], callback=self.parse_detail)
def parse_detail(self, response):
res = BeautifulSoup(response.body)
appleitem = AppleItem()
appleitem['title'] = res.select('h1')[0].text
appleitem['content'] = res.select('.trans')[0].text
appleitem['time'] = res.select('.gggs time')[0].text
return appleitem
スパイダーが開いて閉じているが、何も返されないことを示しています。 Pythonのバージョンは3.6です。誰でも助けてくれますか?ありがとう。クロールログにhereに到達することができるI
EDIT。
EDIT II
は、たぶん私は以下のようにコードを変更した場合、問題をより明確になります。
Import scrapy
from bs4 import BeautifulSoup
class Apple1Spider(scrapy.Spider):
name = 'apple'
allowed_domains = ['appledaily.com']
start_urls = ['http://www.appledaily.com.tw/realtimenews/section/new/']
def parse(self, response):
domain = "http://www.appledaily.com.tw"
res = BeautifulSoup(response.body)
for news in res.select('.rtddt'):
yield scrapy.Request(domain + news.select('a')[0]['href'], callback=self.parse_detail)
def parse_detail(self, response):
res = BeautifulSoup(response.body)
print(res.select('#h1')[0].text)
コードは別途URLとタイトルをプリントアウトする必要がありますが、それは何も返しません。 。
クロールログを投稿してもらえますか?あなたは 'scream crawl spider --logfile output.log'または' scrapy crawl spider 2> 1を使ってこれを行うことができます。 tee output.log'コマンド(後で出力を画面とファイルに出力します)。 – Granitosaurus
@Granitosaurus、私はリンクをログファイルに追加するだけです。ありがとう。 – tzu