Node Scraper returning undefined values

I am trying to run a Nodejs scraper that grabs the data attributes from my <li> tags. Unfortunately I am consistently receiving undefined as my values. I feel like I am not grabbing the data attributes correctly with my code, but I'm not sure how to accurately test.

Returned:

{ name: undefined, address: undefined, url: undefined }

HTML:

 <li id="v1065" data-name="Jerry's Food" data-address="5120 West 43rd Street"  data-url="http://www.testsite1.com/" data-category="1"><a href="#" class="list-digital">
                                        <span class="venue-name">Jerry's Food</span><br />
                                        <span class="venue-address">5120 West 43rd Street</span>

                                        </a>
                                    </li>                           
                                    <li id="v249" data-name="Mikes Pizza" data-address="13482 Seventh Avenue" data-url="http://www.testsite2.com" data-category="3"><a href="#" class="list-digital">
                                        <span class="venue-name">Mike's Pizza</span><br />
                                        <span class="venue-address">13482 Seventh Avenue</span>                             
                                        </a>
                                    </li>           

js:

var request = require('request');
var cheerio = require('cheerio');

request('http://personalsite.com', function (error, response, html) {
  if (!error && response.statusCode == 200) {
    var $ = cheerio.load(html);

    $('li').each(function(i, element){

        var li = $(this).contents();


        var name = li.attr('data-name');
        var address = li.attr('data-address');
        var url = li.attr('data-url');


        var metadata = {
            name : name,
            address : address,
            url : url
        };
        console.log(metadata);
    });
  }
});          

Change var li = $(this).contents(); to var li = $(this);

.contents() doesn't work because it returns the children of the matched element(s) (e.g. the a tag in this case).