1
웹 사이트에서 데이터 수집을 위해 Scrapy BaseSpider를 사용하고 있습니다. 스크래퍼는 제품 디스플레이 페이지에서 시작하여 '다음'페이지 링크로 이동하고 각 페이지에서 특정 데이터를 수집하여 CSV 파일에 저장합니다. 스파이더는 올바르게 실행되지만 1 페이지, 2 페이지 및 마지막 페이지 (36 페이지)에서만 데이터를 수집합니다. 몇 시간 동안 코드를 조작 한 후 이유를 알 수 없습니다. 다음 코드는 내 거미를 보여줍니다. 어떤 제안?모든 페이지에서 데이터를 수집하지 못합니다.
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.http.request import Request
from longs.items import LongsItem
from scrapy.utils.response import get_base_url
import urlparse
class LongsComSpider(BaseSpider):
name = "longs"
allowed_domains = ["longswines.com"]
start_urls = ["http://www.longswines.com/wines/?page=3&sortby=winery&item_type=wine"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select("//div[@class='pagebox']/a[6]/@href")
for site in sites:
relative_next_page = site.extract()
next_page = [urlparse.urljoin(response.url, relative_next_page)]
if not not relative_next_page:
yield Request(next_page[0], self.parse)
products = hxs.select("//div[@class='productlistitem']")
items = []
for product in products:
item = LongsItem()
item["title"] = product.select("div[1]/h2/a/text()").extract()
item["link"] = response.url
item["price"] = product.select("div[2]/h2/text()").extract()
item["details"] = product.select("div[1]/p/text()").extract()
items.append(item)
for item in items:
yield item
당신의 코드가 파손, 볼이이 라인
if not not relative_next_page:
에 문제가 생각하는'사이트에서 사이트에 대한'라인. 아래 줄은 들여 쓰이지 않습니다. 청소를하면 도움이 될 것입니다. –
비슷한 설정으로 다른 웹 사이트에서이 코드를 사용했는데 제대로 작동합니다. 그것은 일부 특정 스크래핑 메커니즘 (facepalm) 때문에이 특정 사이트에서 작동하지 않습니다. 여기서 교훈은 모든 다른 시나리오에서 코드를 시도하는 것입니다. 어쨌든 코드가 누군가를 돕기를 바랍니다. – Anike