我是Scrapy
的新手,並嘗試使用它來練習抓取網站。但是,即使我遵循教程提供的代碼,它也不會返回結果。它看起來像yield scrapy.Request
不起作用。我的代碼如下:產量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。
編輯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,並分別冠軍,但它不返回任何東西。
你可以張貼爬網日誌?您可以通過'scrapy crawl spider --logfile output.log'或'scrapy crawl spider 2> 1 | tee output.log'命令(後者將輸出放到屏幕和文件中)。 – Granitosaurus
@Granitosaurus,我只是將鏈接添加到日誌文件。謝謝。 – tzu