所以我写了一个网络爬虫来从walmart.com中提取食物.这是我的蜘蛛.我似乎无法弄清楚为什么它不遵循左边的链接,直到.它拉出主页然后完成.
我的目标是让它跟随左侧弹出栏上的所有链接,然后从这些页面中提取每个食物项目.
我甚至尝试使用allow =(),以便它跟随页面上的每个链接,但仍然无效.
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.loader import XPathItemLoader
from scrapy.contrib.loader.processor import Join, MapCompose
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor as sle
from walmart_scraper.items import GroceryItem
class WalmartFoodSpider(CrawlSpider):
name = "walmart_scraper"
allowed_domains = ["www.walmart.com"]
start_urls = ["http://www.walmart.com/cp/976759"]
rules = (Rule(sle(restrict_xpaths=('//div[@class="lhn-menu-flyout-inner lhn-menu-flyout-2col"]/ul[@class="block-list"]/li/a',)),callback='parse',follow=True),)
items_list_xpath = '//div[@class="js-tile tile-grid-unit"]'
item_fields = {'title': './/a[@class="js-product-title"]/h3[@class="tile-heading"]/div',
'image_url': './/a[@class="js-product-image"]/img[@class="product-image"]/@src',
'price': './/div[@class="tile-price"]/div[@class="item-price- container"]/span[@class="price price-display"]|//div[@class="tile-price"]/div[@class="item-price- container"]/span[@class="price price-display price-not-available"]',
'category': '//nav[@id="breadcrumb-container"]/ol[@class="breadcrumb-list"]/li[@class="js-breadcrumb breadcrumb "][2]/a',
'subcategory': '//nav[@id="breadcrumb-container"]/ol[@class="breadcrumb-list"]/li[@class="js-breadcrumb breadcrumb active"]/a',
'url': './/a[@class="js-product-image"]/@href'}
def parse(self, response):
selector = HtmlXPathSelector(response) …Run Code Online (Sandbox Code Playgroud) 我已将React应用上传到AWS S3,并且正在使用静态网站托管。然后,我将一个Cloudfront发行版链接到s3存储桶。
我可以导航到该站点,并且可以正常运行,除非导航到新页面my-domain / new-page。一开始它成功,但是如果我尝试直接加载页面或刷新,则会收到403禁止错误。