2017-04-26 53 views
1

我使用Scrapy製作一個網絡爬蟲,它將訪問URL列表並返回來自這些域的所有cookie,包括由第三方設置的cookie。查找與Scrapy的所有cookies

這種蜘蛛遵循在給定的URL的所有鏈接,並在一個單獨的文本文件中寫入每個cookie:

from scrapy.linkextractors import LinkExtractor 
from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.item import Item, Field 
import requests 

class MyItem(Item): 
    url= Field() 


class MySpider(CrawlSpider): 
    name = "a" 
    start_urls = ['http://www.dailymail.co.uk/home/index.html'] 

rules = (Rule(LinkExtractor(), callback='parse_url', follow=False),) 

def parse_url(self, response): 
    item = MyItem() 
    item['url'] = response.url 
    filename = '%s.txt' 
    if response.headers.getlist('Set-Cookie'): 
     page = response.url.split("/")[-2]  
     with open(filename, 'wb') as f: 
      for cookie in response.headers.getlist('Set-Cookie'): 
       f.write(cookie) 

這導致了11個不同的文本每個包含cookie文件。結果與網站cookie-checker.com產生的結果不一致。

有沒有辦法找到使用Scrapy在頁面上設置的所有cookie?

回答

0

一些cookie可以通過客戶端(Javascript)設置
我建議您使用Selenium + PhantomJS來收集所有客戶端/服務器端cookie。

from selenium import webdriver 

driver = webdriver.PhantomJS() 
driver.get('http://www.example.com/') 

cookies = driver.get_cookies()