Mathematica: 323 294 bytes
Uncompress["1:eJxTTMoPSpvOwMBQzAIkfDKLSzJlgAwCBEhtJi8qwQUnpqESsqgEHyqhAjePBc7lgBOccEIUThiBCAm4AayECUZUghmV0EAlBFAdxILqN17CgWMCNwUn4QQnxEAEDyqBcLgkKsGO6gUmLAROX8rjJSRQCSU4IYpKILzAiDfEebG4wADVDmZchBYqgRYVbLgIRPiJ4VXHDDdKGuZ9AAP6TUg="][[Mod[ToCharacterCode@StringTake[#<>#,5].{6,1,8,5,3},151,1]]]&
How it works
For a book beginning with character codes a
,b
,c
,d
,e
(wrapping around if necessary) computes 6a+b+8c+5d+3e
modulo 151, which happens to be unique, and then looks up the number of chapters in a compressed list of length 151. (Unused entries in the list are filled in with duplicates of the previous entry. This encourages run-length encoding, maybe? Anyway, it helps.)
Thanks to @numbermaniac for the list compression idea, which is hard to put a number on but is a huge part of the improvement here.
Old version: Mathematica, 548 435 407 bytes
Join["111112333333344444455555666789"~(p=StringPartition)~1,"1010121213131314141616162121222224242425272828293131343636404248505266"~p~2,{"150"}][[Max@StringPosition["2jn3jnjduoaapimhgi2pe2tshbkjeonhntttzpn2toclsjnjmlhpiprtu1jn1pe1tsjmjlmt1toehiglimcmsnoaometrerzdnlecs2cihbwnhihshzcr1cimrarmsjhojds1kgrva2sujsalku2kglviatcmte1co1supordur2conmreosjbbeeegnijriiahpas",""<>#&@Characters[#<>#][[{1,3,6}]]]/3]]&
How it works
We convert each name name
to characters 1, 3, and 6 of namename
(e.g. leviticus
becomes lvi
, job
becomes jbb
) before looking it up.
The list we look things up in is slightly compressed by putting the 1-digit and the 2-digit chapter numbers together in strings.
Mathematica: 40 bytes, non-competing
WolframAlpha["# chapters "<>#,"Result"]&
Yeah.