2012-10-25 28 views
7

Tôi cần đặt url giới thiệu, trước khi xóa một trang web, trang web sử dụng tham chiếu dựa trên xác thực url, vì vậy nó không cho phép tôi đăng nhập nếu người giới thiệu không hợp lệ.Làm cách nào để đặt url tham chiếu

Ai đó có thể nói cách thực hiện việc này trong Scrapy?

Trả lời

11

Nếu bạn muốn thay đổi các referer trong yêu cầu của nhện, bạn có thể thay đổi DEFAULT_REQUEST_HEADERS trong file settings.py

Ví dụ:

DEFAULT_REQUEST_HEADERS = { 'Referer': 'http://www.google.com'
}

3

Chỉ cần thiết lập url Referer trong tiêu đề Yêu cầu

class scrapy.http.Request(url[, method='GET', body, headers, ...

headers (dict) – the headers of this request. The dict values can be strings (for single valued headers) or lists (for multi-valued headers).

Ví dụ:

return Request(url=your_url, headers={'Referer':'http://your_referer_url'})

6

Bạn nên làm đúng như @warwaruk chỉ ra, dưới đây là ví dụ xây dựng của tôi cho một con nhện bò:

from scrapy.contrib.spiders import CrawlSpider 
from scrapy.http import Request 

class MySpider(CrawlSpider): 
    name = "myspider" 
    allowed_domains = ["example.com"] 
    start_urls = [ 
     'http://example.com/foo' 
     'http://example.com/bar' 
     'http://example.com/baz' 
     ] 
    rules = [(...)] 

    def start_requests(self): 
    requests = [] 
    for item in start_urls: 
     requests.append(Request(url=item, headers={'Referer':'http://www.example.com/'})) 
    return requests  

    def parse_me(self, response): 
    (...) 

này sẽ tạo ra các bản ghi sau trong nhà ga của bạn:

(...) 
[myspider] DEBUG: Crawled (200) <GET http://example.com/foo> (referer: http://www.example.com/) 
(...) 
[myspider] DEBUG: Crawled (200) <GET http://example.com/bar> (referer: http://www.example.com/) 
(...) 
[myspider] DEBUG: Crawled (200) <GET http://example.com/baz> (referer: http://www.example.com/) 
(...) 

Sẽ hoạt động tương tự với BaseSpider. Trong phương thức start_requests kết thúc là phương thức BaseSpider, từ đó CrawlSpider kế thừa từ đó.

Documentation giải thích thêm tùy chọn được đặt trong Yêu cầu ngoài tiêu đề, chẳng hạn như: cookie, chức năng gọi lại, ưu tiên yêu cầu, v.v.

Các vấn đề liên quan