Python 刮痧爬虫把我难住了

Python 刮痧爬虫把我难住了,python,scrapy,web-crawler,Python,Scrapy,Web Crawler,我写了一本书,里面有一些刮痒的爬虫。这件事把我难住了。 我正在清理水龙头公司的网站。布局非常简单。列表页。列表页面上的缩略图将带您进入详细信息页面。我会为每一行项目下载一堆信息。我正在努力获取下一页的URL。我做过几次。我遇到的问题是,我的爬虫程序无法在a标记的超链接上找到属性href。它可以找到其他属性,如“数据绑定”,但不能找到href,就在那里。看起来很直截了当&因此让我更加沮丧 在下面的代码中,爬虫将amazon列表打印为: [<Selector xpath='//div[@id=

我写了一本书,里面有一些刮痒的爬虫。这件事把我难住了。 我正在清理水龙头公司的网站。布局非常简单。列表页。列表页面上的缩略图将带您进入详细信息页面。我会为每一行项目下载一堆信息。我正在努力获取下一页的URL。我做过几次。我遇到的问题是,我的爬虫程序无法在a标记的超链接上找到属性href。它可以找到其他属性,如“数据绑定”,但不能找到href,就在那里。看起来很直截了当&因此让我更加沮丧

在下面的代码中,爬虫将amazon列表打印为:

[<Selector xpath='//div[@id="product-list"]//div[@id="displayedProducts"]//div[@data-bind="attr: { id: \'prd\' + ModelName().replace(\'-\', \'\'), \'data-sortorder\': SortOrder, \'class\': \'product \' + ModelName().replace(\'-\', \'\') }"]//div[@class="finishes"]//div[@data-bind="attr: { \'class\': \'finishSwatch \' + FacetCode() }"]' data=u'<div data-bind="attr: { \'class\': \'finish'>]

[因为有AJAX项加载/scrapy不会执行js…但无论如何,使用普通请求(而不是xpath)获取它们非常容易-浏览浏览器网络面板中的XHR请求谢谢你的提示madzohan。你能给我指一下任何使用XHR的scrapy教程吗?从未处理过XHR请求,或者如果你能建议修改代码让我开始,我会非常感激。因为有AJAX项加载/scrapy不执行js…bu无论如何,使用普通请求(而不是xpath)获取它们非常容易-在浏览器网络面板中查看XHR请求谢谢你的提示madzohan。你能给我指一下scrapy中使用XHR的任何教程吗?我开始学习。从未处理过XHR请求,或者如果你能建议修改代码,我会非常感激。
import scrapy

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from homedepot.items import LowesItem
from homedepot.items import SwatchcolorItem

class SattySpider(scrapy.Spider):
    name = "satty-pfister"
    allowed_domains = ["pfisterfaucets.com"]
    start_urls = [
        "http://www.pfisterfaucets.com/kitchen/category/kitchen-faucets"
    ]

    rules = (
        Rule(LinkExtractor(allow='pfisterfaucets\.com/[A-Z][a-zA-Z_/]+$'),
            'parse_category', follow=True,
        ),
    )


    def parse(self, response):
        print 'enterrrrrrrrrrrrr'
        #amazonlist = response.xpath('//ul[@id="products"]//li[@class="grid_3 "]//div//a[@class="preview_image js_product-link"]')
        amazonlist = response.xpath('//div[@id="product-list"]//div[@id="displayedProducts"]//div[@data-bind="attr: { id: \'prd\' + ModelName().replace(\'-\', \'\'), \'data-sortorder\': SortOrder, \'class\': \'product \' + ModelName().replace(\'-\', \'\') }"]//div[@class="finishes"]//div[@data-bind="attr: { \'class\': \'finishSwatch \' + FacetCode() }"]')

        print amazonlist
        pages = amazonlist.xpath('.//a//@href').extract()
        print 'pages'
        print pages
        #imglarges = amazonlist.xpath('.//@srcset').extract()
        imgs = amazonlist.xpath('.//img//@src').extract()

    for idx1,page in enumerate(pages):

        print page
        url_next = response.urljoin(pages[idx1])
        print url_next 
        yield scrapy.Request(url_next,callback=self.parse_productdetail)            

        for next_url in response.xpath('//div[@class="float-right pagination-pages"]//div//a'):

            urls= next_url.xpath('.//@href').extract()
            for idx1,url in enumerate(urls):
                url_next = response.urljoin(urls[idx1])
                print url_next
                yield scrapy.Request(url_next, callback=self.parse)

    def parse_productdetail(self, response):
        tits='blank'
        #<div class="tabs-navigation group long">
        #//div[contains(@class, "tabs-navigation")]
        for imgs in response.xpath('//div[contains(@class, "tabs-navigation")]//ul[@class="tabs"]//li//img') :

               imgurl= imgs.xpath('.//@href').extract()
               name = imgs.xpath('.//@alt').extract()
               print 'imggggggggggggggggggggggggggggg'
               print imgurl 
               lowesitem = LowesItem(prod=name, file_urls=[imgurl])
               yield lowesitem