2017-02-15 9 views
0

Как использовать прокси-сервер в файле python, который может обрывать данные из амазонки. Мне нужно, чтобы узнать, как использовать прокси-сервер с ниже сценария сценарий здесьКак использовать прокси-сервер в скрипте python?

import scrapy 
from urls import start_urls 
import re 

class BbbSpider(scrapy.Spider): 

    AUTOTHROTTLE_ENABLED = True 
    name = 'bbb_spider' 
    # start_urls = ['http://www.bbb.org/chicago/business-reviews/auto-repair-and-service-equipment-and-supplies/c-j-auto-parts-in-chicago-il-88011126'] 


    def start_requests(self): 
     for x in start_urls: 
      yield scrapy.Request(x, self.parse) 

    def parse(self, response): 

     brickset = str(response) 
     NAME_SELECTOR = 'normalize-space(.//div[@id="titleSection"]/h1[@id="title"]/span[@id="productTitle"]/text())' 
     #PAGELINK_SELECTOR = './/div[@class="info"]/h3[@class="n"]/a/@href' 
     ASIN_SELECTOR = './/table/tbody/tr/td/div[@class="content"]/ul/li[./b[text()="ASIN: "]]//text()' 
     #LOCALITY = 'normalize-space(.//div[@class="info"]/div/p/span[@class="locality"]/text())' 
     #PRICE_SELECTOR = './/div[@id="price"]/table/tbody/tr/td/span[@id="priceblock_ourprice"]//text()' 
     PRICE_SELECTOR = '#priceblock_ourprice' 
     STOCK_SELECTOR = 'normalize-space(.//div[@id="availability"]/span/text())' 
     PRODUCT_DETAIL_SELECTOR = './/table//div[@class="content"]/ul/li//text()' 
     PRODUCT_DESCR_SELECTOR = 'normalize-space(.//div[@id="productDescription"]/p/text())' 
     IMAGE_URL_SELECTOR = './/div[@id="imgTagWrapperId"]/img/@src' 

     yield { 
      'name': response.xpath(NAME_SELECTOR).extract_first().encode('utf8'), 
      'pagelink': response.url, 
      #'asin' : str(re.search("<li><b>ASIN: </b>([A-Z0-9]+)</li>",brickset).group(1).strip()), 
      'price' : str(response.css(PRICE_SELECTOR).extract_first().encode('utf8')), 
      'stock' : str(response.xpath(STOCK_SELECTOR).extract_first()), 
      'product_detail' : str(response.xpath(PRODUCT_DETAIL_SELECTOR).extract()), 
      'product_description' : str(response.xpath(PRODUCT_DESCR_SELECTOR).extract()), 
      'img_url' : str(response.xpath(IMAGE_URL_SELECTOR).extract_first()), 
     } 

и файл start_url здесь

start_urls = ['https://www.amazon.co.uk/d/Hair-Care/Loreal-Majirel-Hair-Colour-Tint-Golden-Mahogany/B0085L50QU', 'https://www.amazon.co.uk/d/Hair-Care/Michel-Mercier-Ultimate-Detangling-Wooden-Brush-Normal/B00TE1WH7U'] 
+0

можно дублировать? : http://stackoverflow.com/questions/4710483/scrapy-and-proxies – Kelvin

ответ

1

Насколько я знаю, есть два способа использования прокси для кода Python:

  • Задайте переменные среды http_proxy и https_proxy, может быть, это самый простой способ использования прокси-сервера.

    Окна:

    set http_proxy=http://proxy.myproxy.com 
    set https_proxy=https://proxy.myproxy.com 
    python get-pip.py 
    

    Linux/OS X:

    export http_proxy=http://proxy.myproxy.com 
    export https_proxy=https://proxy.myproxy.com 
    sudo -E python get-pip.py 
    
  • Поддержка HTTP прокси обеспечивается так Scrapy 0.8 через HTTP прокси-загрузчик промежуточного слоя. , вы можете проверить HttpProxyMiddleware.

    Это промежуточное программное обеспечение устанавливает HTTP-прокси для использования для запросов, устанавливая значение метаданных прокси для объектов Request.

    Как стандартной библиотеки модулей URLLIB и urllib2 Python, он подчиняется следующие переменные окружения:

    http_proxy 
    https_proxy 
    no_proxy 
    

Надеюсь, что это помогает.

+0

Мне нужно использовать HTTP-прокси в приведенном выше скрипте –

+0

@McGrady предоставил вам решение для скрипта, промежуточное ПО - это путь –

0

Если вы хотите сделать код внутри.

Сделайте это.

def start_requests(self): 
    for x in start_urls: 
     req = scrapy.Request(x, self.parse) 
     req.meta['proxy'] = 'your_proxy_ip_here' 
     yield req 

И не забудьте поставить это в settings.py файл

DOWNLOADER_MIDDLEWARES = { 
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 1, 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^