-1
import scrapy
class Pttscrapper2Spider(scrapy.Spider):
name = 'PTTscrapper2'
allowed_domains = ['https://www.ptt.cc']
start_urls = ['https://www.ptt.cc/bbs/HatePolitics/index.html/']
handle_httpstatus_list = [400, 302]
def parse(self, response):
urls = response.css('div.r-ent > div.title > a::attr(href)').extract()
for thread_url in urls:
url = response.urljoin(thread_url)
yield scrapy.Request(url=url, callback=self.parse_details)
next_page_url = response.css('a.wide:nth-child(2)::attr(href)').extract_first()
if next_page_url:
next_page_url = response.urljoin(next_page_url)
yield scrapy.Request(url=next_page_url, callback=self.parse)
def parse_details(self, response):
yield {
'title' : response.xpath('//head/title/text()').extract(),
'stance' : response.xpath('//*[@id="main-content"]/div[@class="push"]/span[1]/text()').extract(),
'userid' : response.xpath('//*[@id="main-content"]/div[@class="push"]/span[2]/text()').extract(),
'comment' : response.xpath('//*[@id="main-content"]/div[@class="push"]/span[3]/text()').extract(),
'time_of_post' : response.xpath('//*[@id="main-content"]/div[@class="push"]/span[4]/text()').extract(),
}
나는 시도하고 웹 사이트를 크롤링 위의 거미를 사용하고
,하지만 난 거미를 실행할 때, 나는이 메시지를 얻을 :Scrapy 크롤링 처리하는 방법 (302) 상태,
> 2017-10-05 23:14:27 [scrapy.core.engine] INFO: Spider opened
> 2017-10-05 23:14:27 [scrapy.extensions.logstats] INFO: Crawled 0 pages
> (at 0 pages/min), scraped 0 items (at 0 items/min) 2017-10-05 23:14:27
> [scrapy.extensions.telnet] DEBUG: Telnet console listening on
> 127.0.0.1:6023 2017-10-05 23:14:28 [scrapy.downloadermiddlewares.cookies] DEBUG: Received cookies from:
> <302 https://www.ptt.cc/bbs/HatePolitics/index.html/> Set-Cookie:
> __cfduid=d3ca57dcab04acfaf256438a57c547e4a1507216462; expires=Fri, 05-Oct-18 15:14:22 GMT; path=/; domain=.ptt.cc; HttpOnly
>
> 2017-10-05 23:14:28 [scrapy.core.engine] DEBUG: Crawled (302) <GET
> https://www.ptt.cc/bbs/HatePolitics/index.html/> (referer: None)
> 2017-10-05 23:14:28 [scrapy.core.engine] INFO: Closing spider
> (finished)
을
내가 생각한 것은 거미가 색인의 하위 포럼에 액세스 할 수 없다는 것입니다. 선택기가 올바른 위치를 가리키고 request.urljoin이 정확한 절대 URL을 생성하지만 페이지의 하위 포럼에 액세스 할 수없는 것으로 보이는 지 테스트했습니다. 누군가가 왜 거미가 링크에 액세스 할 수 없는지 말할 수 있다면 좋을 것입니다!
에서
로그 일 것이다? 해당 오류 코드를 처리하지 않고 제거해야합니다. –
handle_httpstatus를 제거했지만 이제 오류가 발생합니다. 잘못된 URL로 안내됩니다. 'code' 2017-10-06 00:46:33 [scrapy.downloadermiddlewares.redirect] 디버그 : (302)를에서 2017-10-06 00:46:36 [scrapy.core.engine] DEBUG : 크롤링 됨 (404) < GET https://www.ptt.cc/bbs/HatePolitics/index.html/index.html> (referer : None) 'code' –
BladeEntity