In [1]:
import binascii,re
from __future__ import unicode_literals
import urllib
from bs4 import BeautifulSoup as bs
from prettyprint import pp
import codecs
from IPython.display import Image, display

In [2]:
seed_URL = "http://www.goodreads.com/book/show/3241368-the-little-prince-letter-to-a-hostage"
other_URL = "http://www.goodreads.com/book/show/72212.The_Kingdom_by_the_Sea"
another_URL = "http://www.goodreads.com/book/show/31626.The_Gift_of_the_Magi_and_Other_Short_Stories"
yetanother_URL = "http://www.goodreads.com/book/show/823068.Shh_We_re_Writing_the_Constitution"
print seed_URL
print other_URL
print another_URL
print yetanother_URL


http://www.goodreads.com/book/show/3241368-the-little-prince-letter-to-a-hostage
http://www.goodreads.com/book/show/72212.The_Kingdom_by_the_Sea
http://www.goodreads.com/book/show/31626.The_Gift_of_the_Magi_and_Other_Short_Stories
http://www.goodreads.com/book/show/823068.Shh_We_re_Writing_the_Constitution

In [ ]:
down = urllib.urlopen(seed_URL).read()
seed = bs(down.decode('utf-8'))

down = urllib.urlopen(other_URL).read()
other = bs(down.decode('utf-8'))

down = urllib.urlopen(another_URL).read()
another = bs(down.decode('utf-8'))

down = urllib.urlopen(yetanother_URL).read()
yetanother = bs(down.decode('utf-8'))

# divbody = soup.find_all("div", "body")[0]
# divcnt = divbody.find_all("div", "cnt")[0]

In [ ]:
dir(seed)

First getting the title


In [12]:
def getTitle(soup):
    return soup.find("h1", "bookTitle").text.strip()

print getTitle(seed)
print getTitle(other)
print getTitle(another)
print getTitle(yetanother)


The Little Prince & Letter to a Hostage
The Kingdom by the Sea
The Gift of the Magi and Other Short Stories
Shh! We're Writing the Constitution

Then getting the authors' name


In [13]:
def getAuthors(soup):
    authors = []
    au = soup.find_all("a", "authorName")
    for a in au:
        authors.append({"name":a.text.strip(), "url":a.get("href")})
    return authors
print getAuthors(seed)
print getAuthors(other)
print getAuthors(another)
print getAuthors(yetanother)


[{u'url': 'http://www.goodreads.com/author/show/1020792.Antoine_de_Saint_Exup_ry', u'name': u'Antoine de Saint-Exup\xe9ry'}, {u'url': 'http://www.goodreads.com/author/show/6432545.T_V_F_Cuffe', u'name': u'T.V.F. Cuffe'}]
[{u'url': 'http://www.goodreads.com/author/show/7163.Robert_Westall', u'name': u'Robert Westall'}]
[{u'url': 'http://www.goodreads.com/author/show/8993.O_Henry', u'name': u'O. Henry'}]
[{u'url': 'http://www.goodreads.com/author/show/231.Jean_Fritz', u'name': u'Jean Fritz'}, {u'url': 'http://www.goodreads.com/author/show/8725.Tomie_dePaola', u'name': u'Tomie dePaola'}]

Getting description


In [14]:
def getDescription(soup):
    descs = soup.find("div", attrs={"id":"description"}).find_all("span")
    if len(descs) == 1:
        return descs[0].text.strip()
    else:
        return descs[1].text.strip()
    
print getDescription(seed)
print ''
print getDescription(other)
print ''
print getDescription(another)
print ''
print getDescription(yetanother)


The Little Prince is the most translated book in the French language. With a timeless charm it tells the story of a little boy who leaves the safety of his own tiny planet to travel the universe, learning the vagaries of adult behavior through a series of extraordinary encounters. His personal odyssey culminates in a voyage to Earth and further adventures.  Letter to  a Hostage, which contains certain theme that were appear ini The Little Prince, is Saint-Exupery's optimistic and humane open letter to a Jewish intellectual hiding in occupied France in 1943

Twelve-year-old Harry struggles to make it on his own after his family is lost in a German air raid. But as he and his dog companion journey along the northern English coast, there is never enough distance between them and the terrible war.

Here are sixteen of the best stories by one of America's most popular storytellers. For nearly a century, the work of O. Henry has delighted readers with its humor, irony and colorful, real-life settings. The writer's own life had more than a touch of color and irony. Born William Sidney Porter in Greensboro, North Carolina in 1862, he worked on a Texas ranch, then as a bank teller in Austin, then as a reporter for the Houston "Post." Adversity struck, however, when he was indicted for embezzlement of bank funds. Porter fled to New Orleans, then to Honduras before he was tried, convicted and imprisoned for the crime in 1898. In prison he began writing stories of Central America and the American Southwest that soon became popular with magazine readers. After his release Porter moved to New York City, where he continued writing stories under the pen name O.HenryThough his work earned him an avid readership, O. Henry died in poverty and oblivion scarcely eight years after his arrival in New York. But in the treasury of stories he left behind are such classics of the genre as "The Gift of the Magi," "The Last Leaf," "The Ransom of Red Chief," "The Voice of the City" and "The Cop and the Anthem" — all included in this choice selection. A selection of the Common Core State Standards Initiative.

This factual gem that's written with Jean Fritz's humorous touch chronicles the hot summer of 1787 where fifty-five delegates from thirteen states huddled together in the strictest secrecy in Philadelphia to draw up the constitution of the United States!

Getting average rating, number of ratings and number of reviews


In [47]:
def getNumbers(soup):
    nums = {}
    nums["average"] = float(soup.find("span", "average").text)
    nums["ratings"] = int(soup.find("span", attrs={"itemprop":"ratingCount", "class":"value-title"}).get("title"))
    nums["reviews"] = int(soup.find("span", "count").find("span").get("title"))
    return nums

print getNumbers(seed)
print getNumbers(other)
print getNumbers(another)
print getNumbers(yetanother)


{u'reviews': 222, u'ratings': 4639, u'average': 4.46}
{u'reviews': 21, u'ratings': 198, u'average': 4.02}
{u'reviews': 121, u'ratings': 2769, u'average': 4.11}
{u'reviews': 32, u'ratings': 254, u'average': 3.69}

Getting cover image URL


In [21]:
def getCoverPhotoURL(soup):
    return soup.find("img", attrs={"id":"coverImage"}).get("src")
print getCoverPhotoURL(seed)
print getCoverPhotoURL(other)
print getCoverPhotoURL(another)
print getCoverPhotoURL(yetanother)
display(Image(url=getCoverPhotoURL(seed)))
display(Image(url=getCoverPhotoURL(other)))
display(Image(url=getCoverPhotoURL(another)))
display(Image(url=getCoverPhotoURL(yetanother)))


http://d.gr-assets.com/books/1337132322l/3241368.jpg
http://d.gr-assets.com/books/1170806161l/72212.jpg
http://d.gr-assets.com/books/1371670064l/31626.jpg
http://d.gr-assets.com/books/1311281895l/823068.jpg

Getting user reviews (only first page)


In [42]:
def getReviews(soup):
    revs = soup.find("div", attrs={"id":"reviews"}).find_all("div", "friendReviews")
    reviews = []
    for rev in revs:
        review = {}
        review["userURL"] = 'http://www.goodreads.com' + rev.find("div", "review").find("a", "user").get("href")
        review["userName"] = rev.find("div", "review").find("a", "user").text
        review["userReviewDate"] = rev.find("a", "reviewDate").text
        try:
            textConts = rev.find("div", "reviewText").find("span", "readable").find_all("span")
            review["userReview"] = textConts[-1].text.strip()
        except:
            continue
        reviews.append(review)
        
    return reviews

In [80]:
pp(getReviews(yetanother))


[
    {
        "userName": "Kiri", 
        "userReview": "This is a great little book (probably aimed at middle-school kids, but great reading even for adults) telling a short version of the story of the Constitutional Convention.  It is peppered with little tidbits about the delegates (like fishing habits or what they wrote home to their children) that give them personality and humanity.  Told in simple and straightforward language, it also hits on all of the hot-button topics that would ultimately lead to four months of deliberation and debate: state rights, representation, slavery, how to choose a president, etc.  I also gained a better sense of the important distinction between the terms "national" (a central government with power over the states) and "federal" (a government of an association of states that give up none of their individual rights).  The original Constitution never used the word "national" because it was so offensive to many of the delegates.  Our states therefore were joined into a federation, and not a nation, to create the United States of America.  Overall, an enjoyable and educational read.  The full text (and it's not very long) of the original Constitution is included at the end of the book. "We the people" never fails to inspire a little thrill of pride.", 
        "userReviewDate": "Sep 24, 2010", 
        "userURL": "http://www.goodreads.com/user/show/1849033-kiri"
    }, 
    {
        "userName": "Nancy", 
        "userReview": "Any book by Jean Fritz get my 5 star rating!  I have my students at the University read this book as an introduction to the time period. So historically accurate, so delightfully detailed, so short, so funny, so readable.", 
        "userReviewDate": "Nov 02, 2008", 
        "userURL": "http://www.goodreads.com/user/show/1545012-nancy"
    }, 
    {
        "userName": "Robert", 
        "userReview": "I think this would be an excellent book to read with my fourth graders.  So much so that I am now looking into electronic classroom wish lists so I can list the book.  I don't seem to be able to find enough copies used to make it worthwhile to purchase a class set.Fritz has a way of describing history well.  I really liked this book  Admittedly, I am a fan of the Revolutionary period and the Constitution specifically.  I do carry a copy in my breast pocket!Anyhow, this book pretty much describes the ending of the fourth grade social studies curriculum I teach.  Unfortunately, Fritz does not use the term New Jersey Plan to describe the part of the Great Compromise that create the balance in the Senate that we have.  The plan is described accurately, just not named so.One gains a pretty good feel for the struggle our forefathers had in crafting our government.  We learn of the different sides of terms like federal and national.  And we see how some were not in favor of a federal government preferring the states to remain sovereign (can you hear me, George Mason?).  If anyone would like to donate a copy of this book for my fourth graders to use, let me know and I will provide the particulars.  That is how much I enjoyed reading this!", 
        "userReviewDate": "Jul 01, 2012", 
        "userURL": "http://www.goodreads.com/user/show/1661541-robert"
    }, 
    {
        "userName": "Denise Krebs", 
        "userReview": "Again, Jean Fritz does such a good job of taking a dry subject and adding life. For instance, I learned that during a break from the Constitution Convention Oliver Ellsworth wrote a letter home about visiting an Egyptian mummy on display in Philadelphia and how he opened it up so he could see what the flesh was like. That is a horrific fact, but there are occasional such engagements for young readers. Details about the first July 4th parade and celebration in Philadelphia were great too!However, as I read this book, with all my background knowledge about the Constitution, I wasn't fully engaged on every page. I continue to realize how important passion and choice are for students. If a student is interested in government and specifically the U.S. Constitution, this book would be awesome. If not, it would be hard for a young person to sit through the whole book, which is only 44 pages.I also always love the pictures by Tomie dePaola.", 
        "userReviewDate": "Jul 05, 2012", 
        "userURL": "http://www.goodreads.com/user/show/4522949-denise-krebs"
    }, 
    {
        "userName": "Brooke", 
        "userReview": "BiographyIn fifth grade, we learned a great deal about the Revolutionary war. Then when we were done that unit, we went straight to the Civil War. We missed such an important part of American history! This book teaches us such key topics that I feel students should know, like how to pick a president, state rights, slavery, and representation. America had succeeded from England, then they had to write an entire constitution! This book is an easy way to explain to students what our founding fathers went through to make our country what it is today. It also eases the passage way from  the Revolutionary War to the Civil War, since they had to make some changes to the constitution after the civil war, for instance: abolishing slavery.", 
        "userReviewDate": "Apr 22, 2012", 
        "userURL": "http://www.goodreads.com/user/show/7521957-brooke"
    }, 
    {
        "userName": "Heather", 
        "userReview": "Hmmm, I thought I had written a big long review for this, but I guess I didn't.This was a solid introduction to the events leading up to the Convention as well as some of the debates that occurred.  My boys were able to understand the Virginia plan and why the smaller states had issues with some things.  The book briefly touched on the conflict between Northern and Southern states as well.It'd difficult to condense everything that was said and all the personalities into one book for children.  Fritz did a good job.  While I think this is a good choice, I will continue to try to find one I like better.  But I wouldn't hesitate to use this again.", 
        "userReviewDate": "Mar 10, 2011", 
        "userURL": "http://www.goodreads.com/user/show/1212796-heather"
    }, 
    {
        "userName": "Tracey", 
        "userReview": ""Shh! We're Writing the Constitution" should be a must read for every elementary school student! This book presents the summer of 1787 in a manner students can understand. Humor is thrown in, as well, to bring the Founding Fathers to life! I am considering the inclusion of this book into our classroom activities.  Any adult would find this book intriguing, too, especially if they don't know much about the Constitutional Convention. Pick up this book and read it! You can read it in less than an hour!", 
        "userReviewDate": "Oct 05, 2013", 
        "userURL": "http://www.goodreads.com/user/show/4127186-tracey"
    }, 
    {
        "userName": "Ruth", 
        "userReview": "A good story-based introduction to the constitution. It was a bit fact-heavy for a picture book, and it would have been nice if it was divided up into chapters; it was hard to find good stopping points. Some of this was over my seven year old's head, but she got the general idea that deciding on our country's firm of government was not an easy decision and it took a while for the delegates to agree.", 
        "userReviewDate": "Jan 24, 2012", 
        "userURL": "http://www.goodreads.com/user/show/833647-ruth"
    }, 
    {
        "userName": "Nicole", 
        "userReview": "Written in a way that students can understand the history that made up the United States.  This book is a little long, but if you pull out parts you need for lessons or have the book be optional for students to read it can be manageable.  I learned a lot and would definitely read this book again for a refesher on the Constitution and other historical events that shaped our country.", 
        "userReviewDate": "Apr 19, 2013", 
        "userURL": "http://www.goodreads.com/user/show/13230104-nicole"
    }, 
    {
        "userName": "Tye", 
        "userReview": "This was great for me as a refresher on the Constituion.", 
        "userReviewDate": "Jan 22, 2014", 
        "userURL": "http://www.goodreads.com/user/show/11446171-tye"
    }, 
    {
        "userName": "Laura", 
        "userReview": "This is a wonderful story to read to younger children about the creation of our country's constitution.  It covers all the basic problems our constitutional congress faced and the solutions they settled on.  It has very entertaining and helpful pictures as well! Grades 2 - 6.I love all of Jean Fritz's historical books!  I highly recommend them all!", 
        "userReviewDate": "Feb 03, 2011", 
        "userURL": "http://www.goodreads.com/user/show/875677-laura"
    }, 
    {
        "userName": "Carol", 
        "userReview": "I read this with my daughter, who is 8. I enjoyed it a lot. It was informative, funnny and had a lot of interesting trivia. Who knew Benjamin Franklin came to the convention in a Chinese sedan chair carried by four prisoners from a Philadelphia jail? I think I got more out of it than A did, though. Hopefully, she picked up some bits and pieces.", 
        "userReviewDate": "Mar 31, 2008", 
        "userURL": "http://www.goodreads.com/user/show/350705-carol"
    }, 
    {
        "userName": "Nicole Flores", 
        "userReview": "This is another one of Jean Fritz's wonderful stories. This is a historical fiction book about how hard it was to come up with this document and the importance of it. I would do this as a read aloud because it is a high level book but it is definitly important and it puts the writing of the constitution in perspective.", 
        "userReviewDate": "Apr 10, 2011", 
        "userURL": "http://www.goodreads.com/user/show/4203420-nicole-flores"
    }, 
    {
        "userName": "O2snowwhite", 
        "userReview": "I LOVE this book!  As with any of Fritz's books, you can tell that history is her passion.  It's a little long for younger kids, but packed full of awesome information, some of which is more trivial and less-known, but helps bring the "characters" to life.", 
        "userReviewDate": "Aug 01, 2011", 
        "userURL": "http://www.goodreads.com/user/show/1575474-o2snowwhite"
    }, 
    {
        "userName": "Etta Mcquade", 
        "userReview": "Jean Fritz, in her usual sense of humor, reveals the personalities of the various constitutional delegates, yet at the same time is able to show the great task that they had undertaken.  Excellent for grade school children.", 
        "userReviewDate": "Feb 13, 2010", 
        "userURL": "http://www.goodreads.com/user/show/3275419-etta-mcquade"
    }, 
    {
        "userName": "Mrs.Garcia", 
        "userReview": "Great information. Easy read, but I'll probably read portions to my class. Might be tough for my fourth graders to get through. I loved it, but it is not exactly high interest for them.", 
        "userReviewDate": "Jul 02, 2011", 
        "userURL": "http://www.goodreads.com/user/show/5658276-mrs-garcia"
    }, 
    {
        "userName": "Vicky", 
        "userReview": "I have enjoyed all of Jean Fritz's books, I think I know all about a person she has written about, but she has ALWAYS found some small bit of information that I find fascinating.", 
        "userReviewDate": "Apr 22, 2012", 
        "userURL": "http://www.goodreads.com/user/show/2903437-vicky"
    }, 
    {
        "userName": "Amy", 
        "userReview": "Post Revolution, of course, but we were on a Fritz kick and we couldn't stop!  Such interesting trivia sprinkled through this book - it makes the story really memorable.", 
        "userReviewDate": "May 30, 2013", 
        "userURL": "http://www.goodreads.com/user/show/7841913-amy"
    }, 
    {
        "userName": "Ethan", 
        "userReview": "I didn't really like this book because it was boring and I already knew most of the stuff they talked about. I did learn a little, though.", 
        "userReviewDate": "Apr 20, 2012", 
        "userURL": "http://www.goodreads.com/user/show/7584128-ethan"
    }, 
    {
        "userName": "Sharon", 
        "userReview": "Decent writ but I felt that many important details were left out so that some more humorous spots could be added.", 
        "userReviewDate": "Nov 11, 2011", 
        "userURL": "http://www.goodreads.com/user/show/3940819-sharon"
    }, 
    {
        "userName": "Jessica", 
        "userReview": "*Constitution**Bill of Rights**Constitutional Convention**Articles of Confederation**George Washington*", 
        "userReviewDate": "Apr 14, 2011", 
        "userURL": "http://www.goodreads.com/user/show/4193164-jessica"
    }, 
    {
        "userName": "Anibas", 
        "userReview": "I have to read this book while I am on vacation this week.  So far it is boring so my mom is going to read it with me.", 
        "userReviewDate": "Jun 06, 2008", 
        "userURL": "http://www.goodreads.com/user/show/1013529-anibas"
    }, 
    {
        "userName": "Joenna", 
        "userReview": "An in-depth look at the making of the Constitution.  Very informative and great for school reports!", 
        "userReviewDate": "Mar 11, 2008", 
        "userURL": "http://www.goodreads.com/user/show/52411-joenna"
    }, 
    {
        "userName": "Skye", 
        "userReview": "Lots of info about the constitution (and the actual constitution in the back).", 
        "userReviewDate": "Sep 21, 2011", 
        "userURL": "http://www.goodreads.com/user/show/1852772-skye"
    }, 
    {
        "userName": "Caren", 
        "userReview": "A perfect little book that explains the process to write up the Constition.", 
        "userReviewDate": "Jun 11, 2012", 
        "userURL": "http://www.goodreads.com/user/show/1790048-caren"
    }, 
    {
        "userName": "Sally", 
        "userReview": "Her autobiography about growing up in China looks interesting, too.", 
        "userReviewDate": "Sep 27, 2008", 
        "userURL": "http://www.goodreads.com/user/show/806278-sally"
    }, 
    {
        "userName": "Rachel", 
        "userReview": "Talks about how they wrote they constitution and the government.", 
        "userReviewDate": "Mar 10, 2011", 
        "userURL": "http://www.goodreads.com/user/show/4193199-rachel"
    }, 
    {
        "userName": "Tessa", 
        "userReview": "Fantastic!  A must read.", 
        "userReviewDate": "May 04, 2012", 
        "userURL": "http://www.goodreads.com/user/show/7342321-tessa"
    }, 
    {
        "userName": "John", 
        "userReview": "interesting details!!!", 
        "userReviewDate": "Jan 21, 2008", 
        "userURL": "http://www.goodreads.com/user/show/140121-john"
    }, 
    {
        "userName": "Jack", 
        "userReview": "I read it at school", 
        "userReviewDate": "Sep 30, 2011", 
        "userURL": "http://www.goodreads.com/user/show/6493772-jack"
    }
]

In [40]:
def getBookLinks(soup, url):
    links = []
    for link in soup.find_all("a"):
        l = link.get("href")
        if l:
            if l.startswith("/book/show"):
                if l.find('?') > 0:
                    l = l[:l.find('?')]
                l = 'http://www.goodreads.com' + l
            elif l.startswith("http://www.goodreads.com/book/show"):
                if l.find('?') > 0:
                    l = l[:l.find('?')]
            else:
                continue
            pr = fuzz.partial_ratio(l, url)
            r = fuzz.ratio(l, url)
            match_score = 0.7 * pr + 0.3 * r
            if r < 80 and pr < 100:
                links.append(l)
                print l
                print r

In [41]:
getBookLinks(other, other_URL)


http://www.goodreads.com/book/show/8721083-the-kingdom-by-the-sea-robert-westall
74
http://www.goodreads.com/book/show/18481506-la-grande-avventura
59
http://www.goodreads.com/book/show/8721083-the-kingdom-by-the-sea-robert-westall
74
http://www.goodreads.com/book/show/8721083-the-kingdom-by-the-sea-robert-westall
74
http://www.goodreads.com/book/show/8721083-the-kingdom-by-the-sea-robert-westall
74
http://www.goodreads.com/book/show/476814.My_Neighbor_Totoro_Picture_Book
63
http://www.goodreads.com/book/show/257750.Cuckoo_in_the_Nest
75
http://www.goodreads.com/book/show/1141108.The_War_of_Jenkin_s_Ear
71
http://www.goodreads.com/book/show/439597.Spider_Man_3
68
http://www.goodreads.com/book/show/56324.When_the_Soldiers_Were_Gone
72
http://www.goodreads.com/book/show/744175.Words_By_Heart
74
http://www.goodreads.com/book/show/1579906.Street_Child
66
http://www.goodreads.com/book/show/3744599-the-faerie-door
66
http://www.goodreads.com/book/show/1038268.Slake_s_Limbo
71
http://www.goodreads.com/book/show/130203.The_Friendship
74
http://www.goodreads.com/book/show/259066.Lupita_Manana
68
http://www.goodreads.com/book/show/13436366-third-grade-angels
62
http://www.goodreads.com/book/show/10181349-metallic-dreams
66
http://www.goodreads.com/book/show/1175278.Lavender_Leigh_at_the_Chalet_School
68
http://www.goodreads.com/book/show/915840.Ida_Early_Comes_over_the_Mountain
68
http://www.goodreads.com/book/show/13498930-adventure-time-with-finn-jake
60
http://www.goodreads.com/book/show/827276.Travel_Light
68
http://www.goodreads.com/book/show/1626753.Where_I_Live
73
http://www.goodreads.com/book/show/10963.The_Machine_Gunners
75
http://www.goodreads.com/book/show/402126.Blitzcat
74
http://www.goodreads.com/book/show/795182.Scarecrows
71
http://www.goodreads.com/book/show/2721990-the-cats-of-seroster
67
http://www.goodreads.com/book/show/1975160.Futuretrack_5
67

In [11]:
from fuzzywuzzy import fuzz
p_ratio = 0.7
for link in getBookLinks(yetanother):
    print link
    print fuzz.partial_ratio(link, yetanother_URL)
    print fuzz.ratio(link, yetanother_URL)
    print p_ratio * fuzz.partial_ratio(link, yetanother_URL) + (1-p_ratio) * fuzz.ratio(link, yetanother_URL)


http://www.goodreads.com/book/show/89964.Shh_we_re_writing_the_Constitution
92
93
92.3
http://www.goodreads.com/book/show/3986205-shh-we-re-writing-the-constitution
81
81
81.0
http://www.goodreads.com/book/show/581466.Shh_We_re_Writing_the_Constitution
94
95
94.3
http://www.goodreads.com/book/show/8172187-shh-we-re-writing-the-constitution
81
82
81.3
http://www.goodreads.com/book/show/7706095-shh-we-re-writing-the-constitution
80
81
80.3
http://www.goodreads.com/book/show/29819.The_Landing_of_the_Pilgrims
73
71
72.4
http://www.goodreads.com/book/show/89963.If_You_Were_There_When_They_Signed_The_Constitution
65
75
68.0
http://www.goodreads.com/book/show/227569.A_History_of_US
71
65
69.2
http://www.goodreads.com/book/show/880161.Phoebe_the_Spy
76
70
74.2
http://www.goodreads.com/book/show/4821.If_You_Sailed_On_The_Mayflower
65
63
64.4
http://www.goodreads.com/book/show/1357471.The_Thanksgiving_Story
70
67
69.1
http://www.goodreads.com/book/show/6471.Meet_George_Washington
75
71
73.8
http://www.goodreads.com/book/show/955192.We_the_Kids
79
70
76.3
http://www.goodreads.com/book/show/843454.World_War_II
77
65
73.4
http://www.goodreads.com/book/show/6415223-before-columbus
68
63
66.5
http://www.goodreads.com/book/show/203411.Ben_Franklin
75
66
72.3
http://www.goodreads.com/book/show/563098.George_Washington
79
74
77.5
http://www.goodreads.com/book/show/470980.Sarah_Morton_s_Day
75
68
72.9
http://www.goodreads.com/book/show/295474.Cleopatra
76
63
72.1
http://www.goodreads.com/book/show/823068.Shh_We_re_Writing_the_Constitution
100
100
100.0
http://www.goodreads.com/book/show/823068
100
70
91.0
http://www.goodreads.com/book/show/823068.Shh_We_re_Writing_the_Constitution
100
100
100.0
http://www.goodreads.com/book/show/823068.Shh_We_re_Writing_the_Constitution
100
100
100.0
http://www.goodreads.com/book/show/823068.Shh_We_re_Writing_the_Constitution
100
100
100.0