Scrapy 파충류 변경 요청 헤더

1859 단어 파충
파충류 의 요청 머리 를 수정 해 야 할 때 가 많 습 니 다.더 이상 말 하지 않 고 다음 코드 부터 시작 하 겠 습 니 다.
middlewares.py 파일 에 요청 헤드 의 목록 을 만 들 고 random 함 수 를 사용 하여 어떤 요청 헤드 를 무 작위 로 호출 합 니까?
middlewares.py
class UserAgentDownloadMiddleware(object):
    '''
          
                 
    '''

    USER_AGENTS = [
        'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36',
        'Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36',
        'Mozilla/5.0 (X11; Linux i686; rv:64.0) Gecko/20100101 Firefox/64.0',
        'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0',
    ]

    def process_request(self, request, spider):
        user_agent = random.choice(self.USER_AGENTS)
        request.headers['User-Agent'] = user_agent

settings.py 파일 에서 호출 요청 헤더 함수 수정(설명 취소,위 에서 정의 한 클래스 호출)
setting.py
DOWNLOADER_MIDDLEWARES = {
   'useragent_demo.middlewares.UserAgentDownloadMiddleware': 543,
}


scrapy 파충류 프로그램 에서 호출 을 시작 할 수 있 습 니 다:
import scrapy
import json
class HttpbinSpider(scrapy.Spider):
    name = 'httpbin'
    allowed_domains = ['httpbin.org']
    start_urls = ['http://httpbin.org/user-agent']

    def parse(self, response):
        user_agent = json.loads(response.text)['user-agent']
        print('=='*20)
        print(user_agent)
        print('==' * 20)
        yield scrapy.Request(self.start_urls[0], dont_filter=True)  # dont_filter=True        

그리고 start 파일 을 실행 하면 새로운 요청 헤드 를 인쇄 할 수 있 습 니 다.
from scrapy import cmdline
cmdline.execute("scrapy crawl httpbin".split())

좋은 웹페이지 즐겨찾기