Python scrapy reddit确认按钮中断爬网

Python scrapy reddit确认按钮中断爬网,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我试图抓取网站上的数据,当我进入一个18+的页面时,我会看到一个警告页面。我的爬虫程序通常在大多数reddit页面上工作,我可以成功地获取数据。我尝试使用selenium进入下一页,当它打开浏览器时是成功的,但是爬虫程序没有进入该页。下面是我的代码 class DarknetmarketsSpider(scrapy.Spider): name = "darknetmarkets" allowed_domains = ["https://www.reddit.com"] s

我试图抓取网站上的数据,当我进入一个18+的页面时,我会看到一个警告页面。我的爬虫程序通常在大多数reddit页面上工作,我可以成功地获取数据。我尝试使用selenium进入下一页,当它打开浏览器时是成功的,但是爬虫程序没有进入该页。下面是我的代码

class DarknetmarketsSpider(scrapy.Spider):
    name = "darknetmarkets"
    allowed_domains = ["https://www.reddit.com"]
    start_urls = (
        'http://www.reddit.com/r/darknetmarkets',
    )
    rules = (Rule(LinkExtractor(allow=()), callback='parse_obj', follow=False),)
    def __init__(self):
        self.driver = webdriver.Firefox()

    def parse(self, response):
        self.driver.get('http://www.reddit.com/r/darknetmarkets')
        #self.driver.get('https://www.reddit.com/over18?dest=https%3A%2F%2Fwww.reddit.com%2Fr%2Fdarknetmarketsnoobs')

        while True:
            try:
                YES_BUTTON = '//button[@value="yes"]'
                next = self.driver.find_element_by_xpath(YES_BUTTON).click()


                url = 'http://www.reddit.com/r/darknetmarkets'

                next.click()
            except:
                break

        self.driver.close()


        item = darknetItem()
        item['url'] = []
        for link in LinkExtractor(allow=(), deny=self.allowed_domains).extract_links(response):
            item['url'].append(link.url)
            print link
按钮的css

<button class="c-btn c-btn-primary" type="submit" name="over18" value="yes">continue</button>
继续

我看到您试图绕过该子Reddit中的年龄限制屏幕。单击“继续”按钮后,该选项将保存为cookie,因此您必须重新进入scrapy

用Selenium点击后,保存cookies并将其发送给scrapy

代码由


Reddit有。我看到大多数人使用praw,但更喜欢scrapy。Selenium和scrapy不会相互交流,除非你专门从一个发送到另一个。一旦selenium抓取了所有的网站,所有的数据都失去了趣味性,是否有可能用scrapy解决这个问题,我想这就是我的问题。
class MySpider(scrapy.Spider):
name = 'MySpider'
start_urls = ['http://reddit.com/']

def get_cookies(self):
    self.driver = webdriver.Firefox()
    base_url = "http://www.reddit.com/r/darknetmarkets/"
    self.driver.get(base_url)
    self.driver.find_element_by_xpath("//button[@value='yes']").click()
    cookies = self.driver.get_cookies()
    self.driver.close()
    return cookies

def parse(self, response):
    yield scrapy.Request("http://www.reddit.com/r/darknetmarkets/",
        cookies=self.get_cookies(),
        callback=self.darkNetPage)