豆瓣搜索爬虫+中国的“犹太伪书”现象


       在我小学的很长一段时间里,当我提出一个要求,比如说想去和小伙伴玩,我母亲都会让我说出做这件事的三个理由。而我母亲这样做的原因是某本育儿书上说犹太家庭都会这样做,好像这就是许多犹太家庭能培养出精英的诀窍。每当看到那些标“犹太智慧”书籍时,就会想起小时候绞尽脑汁想奇怪的理由的场景。在本篇论文,基于我的专业背景,通过一些技术手段,对这些“犹太伪书”,做了一些研究。

1.     58本书的数据分析

a)     分析设计

                i.         首先使用 犹太、以色列、塔木德 等词汇进行搜索,大致判断了与“犹太伪书”有关的关键词,并咨询了老师,确定了搜索的四组关键词。

               ii.         第二步,使用了四组关键词在豆瓣进行书籍检索:

关键词

评分最高书籍

最高评分

搜索总结果数(本)

犹太+智慧

犹太人的奇异思想 (中国社会科学出版社)

8.0

135

犹太+励志

犹太人智慧全书(长安)

7.4

26

塔木德+智慧

塔木德智慧全集(新世界出版社)

8.9

40

犹太+羊皮卷

犹太商人羊皮卷(哈尔滨出版社)

8.0

4

             iii.         第三步,爬虫获取每个搜索结果的前20本书(最后一个搜索关键词只有4本书),共64本书,删去重复结果,共58本书作为本次的分析样本。这58本书是基于关键词筛选出的,并不都是伪书

              iv.         第四步,爬取豆瓣书籍详情页,获取标题、作者、摘要和目录信息。(相对于一些书籍并不属实的摘要,目录信息或许更能体现出一本书的真实内容。)

               v.         第五步,清洗数据,生成58本书的信息表。按照标题,简介,目录分别生成关键词词云。

b)     结果分析

                i.         书籍标题特征

1.     经过观察发现,这些书籍的名称大同小异,多数会冠以全集等标识,似乎读完了这本书就可以获得犹太民族能够成为精英的全部秘诀。而大部分书也或多或少地透露着有关“财富”的讯息。

2.     根据分词结果生成的词云中可以看到“全集”、“全书”、“密码”等惹人眼球的词汇是最明显的。

1

               ii.         书籍摘要特征

1.     在书籍摘要我们可以看到“世界”、“民族”、“经商”、“财富”等词汇凸显了出来。而令人意外的是,“世界”是出现频率最高的词汇,也从一个侧面体现出了犹太民族的世界性。

              iii.         书籍目录特征

1.     作为一本需要吸引眼球的书,书名和简介很多都经过粉饰,但目录会最直观地说明书籍的主要内容,从结果中发现,关于“财富”和“教育”的“智慧”是这些书最钟爱的部分。

a)     在词云中我们可以看到,“金钱”成为了最明显的词汇,目录清晰地显露出了这些伪书的最终目的——“金钱”。贴在犹太民族身上的“成功的商人”的标签成为了出版商吸引眼球最有利的工具。

b)     第二明显的词汇是“孩子”,除了巨大的财富,犹太民族对于教育的重视也是一个比较深刻的印象。

c)     “财富”和“教育”是中国社会当下两个最大的焦虑点,恰好犹太民族又有许多在商业和教育方面成功的例子,出版商们业就抓住了这个痛点。

                                                                

              iv.         书籍作者分析

1.     这些书籍的作者大多是中国人,其中几个作者的名字有多次出现,“贺雄飞”、“柯友辉、“汪辉”。其中,能找到个人信息的一个作者是“贺雄飞”。根据豆瓣和百度到的一些资料,此人是一个成功的出版人,策划过很多畅销书。从标题和书籍的目录中可以看出他的书比很多其他同类书籍要高明和精致,但还是陈词滥调的重复,缺少根据。

2.     在少量的外籍作者中,还有“弥赛亚”,“所罗门”’这样的名字。

3.     通过查阅作者的真实身份,我发现,这些书并非全部都是“伪书”。

               ii.         书籍评分及评价分析

1.     在58本书中有28本有豆瓣评分,平均分高达7.4分,在短评中,大多数人表示自己受到了很大的启迪和鼓励。而一些得分很高的书确实很明显的“伪书”。究其原因,应当是这些成功学书名已经过滤掉了许多非目标读者。

2. 犹太+智慧=“伪书”?

       在做了一些关于犹太伪书的调研之后,当我看到“犹太”+“智慧”的通俗读物,就自动把其归为了“伪书”,但事实告诉我并不是这样。在58本书的作者中,有两名真正的犹太拉比。第一位是“马尔文·托卡耶尔”(Marvin Tokayer)【1】,另一位是“丹尼尔·拉平”(Daniel Lapin)【2】。

       马尔文·托卡耶尔被认为是第一个将这种“犹太智慧”送入儒家文明圈的人。1968年,他被美国犹太教哈巴德派大拉比Schneerson派往日本做日本的首席拉比。在日本,托卡耶尔出版了许多日文书籍,向日本大众介绍犹太民族独特的思维与行为方式。托卡耶尔使用了一种日本漫画书式的简练生动的叙事风格,这种开创性的、专为远东读者设计的”托卡耶尔文体”在日本大获成功,可以说,托卡耶尔开创了犹太智慧的远东时代。【3】

       “托卡耶尔体”是生动有趣的,但是讨论的问题绝不是随意的,以《犹太人的奇异思想》这本书为例,从《圣经》出发,对圣经中的人物形象和犹太传统做出解读,提炼出“犹太智慧”,平实易懂,有理有据。

       托卡耶尔也曾视图通过孙中山的犹太警卫“双枪科恩”在中国的旧关系建立与中国的联系,但没有成功。他应当不会想到,他阐述的“犹太智慧”会在中国以东施效颦的“伪书”形式传播。

      

       另一位拉比“丹尼尔·拉平”,在豆瓣上能找到的一本他的译作是《你会发财》。(我不确定这是否是伪书,从丹尼尔··拉平的出版物列表没有找到这本书,但是标题很像是拉平的分割。)他是一名美国正统派拉比,写过许多的出版物和一些有声书,现在和他的妻子一起有一档电视节目,为大家提供精神指导。还有一家出版物公司。中信出版了他的《犹太致富金律》(Thou Shall Prosper),这本书更关注将“智慧”如何变成金钱,开头的第一章就是“不要瞧不起财富”,但是本书并非像是“犹太伪书”那样喋喋不休地重复陈词滥调,确乎更关注用“犹太智慧”指导现实生活。

我无法评价丹尼尔·拉平的出版物,但是可以看到,将“犹太智慧”与“成功学”联系在一起的,并不只是中国出版商,还有正统派拉比。

 

3.犹太伪书产生的原因与影响

       首先,中华民族与犹太民族在近代的经历上有大量的相似之处。都在二战中被法西斯沉重伤害,从伤害中恢复后迅速成长为世界舞台上不可小觑的力量,都重视教育的民族,都常在非原住地遭到排挤和迫害。中华民族已经积累了许多的财富,追求在科技创新、世界影响力方面的成就成为了新的目标,而犹太民族在西方世界中取得的卓越的科技、文化、方面的成就使其成为一个标杆,东方民族希望从他们的成就中获得更多的经验。

       其次,缺少真正关于“犹太智慧”的普及,人们对于“犹太智慧”本身的渴望被出版商利用,粗制滥造的“伪书”占据了市场。

       最终,这些“犹太伪书”可能会使人们对真正的“犹太智慧”产生误解,比如说我,在发现托卡耶尔的著作之前已经把“犹太”+“智慧”和伪书画上了等号,甚至错把“犹太伪书”当做“犹太文化”,不再愿意接受真正的犹太文化。“犹太伪书”的盛行无疑对渴望了解犹太文化的读者和犹太文化在中国的传播都是巨大的伤害。

参考文献:

【1】    Marvin Tokayer https://en.wikipedia.org/wiki/Marvin_Tokayer

【2】    Daniel Lapin https://en.wikipedia.org/wiki/Daniel_Lapin

【3】    远离伪书——我们的“犹太智慧”是从哪里来的?http://blog.sina.com.cn/s/blog_6211217f0102uyn4.html


爬虫代码:

豆瓣书籍搜索的功能是动态加载的,需要伪装成浏览器,所以就选取了从豆瓣主站搜索的方式。

# -*- coding: utf-8 -*-
"""
Created on Sat May 26 18:00:33 2018

@author: Lenovo
"""
import requests
import re
from bs4 import BeautifulSoup
import pandas as pd
import jieba.posseg as pseg
from scipy.misc import imread
from wordcloud import WordCloud, ImageColorGenerator
import pylab as plt

result=[]

book_href_list=[]
title_list=[]
urllist=['https://www.douban.com/search?cat=1001&q=%E7%8A%B9%E5%A4%AA+%E6%99%BA%E6%85%A7'
,'https://www.douban.com/search?cat=1001&q=%E7%8A%B9%E5%A4%AA+%E5%8A%B1%E5%BF%97'
,'https://www.douban.com/search?cat=1001&q=%E5%A1%94%E6%9C%A8%E5%BE%B7+%E6%99%BA%E6%85%A7'
,'https://www.douban.com/search?cat=1001&q=%E7%8A%B9%E5%A4%AA+%E7%BE%8A%E7%9A%AE%E5%8D%B7'
]
id_list=[]
url= 'https://book.douban.com/subject_search?search_text=%E7%8A%B9%E5%A4%AA&cat=1001'
num_list=[]
intro_list=[]
#存储书籍详情信息
book=[]
book_data_list=[]
#count=0
def getcontent(url):#,count):
    #urlapd=str(count)
    #url=url+'&start='+urlapd
    res = requests.get(url)
    soup = BeautifulSoup(res.text, 'html.parser')
    #htmlname=urlapd+'.html'
    #f = open(htmlname,"w",encoding='utf-8')  
    #f.write(res.text)
    booklist=soup.select('.result-list .result')
    for b in booklist:
        href_text=b.select('.title a')
        title=href_text[0].text
        #print(title)
        title_list.append(title)
        href=href_text[0]['href']
        book_href_list.append(href)
        id_extend=href_text[0]['onclick']
        id_list.append(id_extend)
        #count=count+1
    #count=15
    #urlapd=str(count)
    #Nextpage=url+'&start='+urlapd
    #getcontent(Nextpage)

def getdetail():
    for i in id_list:
        pattern1=re.compile('sid:.*?,')
        s_extend=pattern1.findall(i)[0]
        pattern2=re.compile("\d+\.?\d*")
        num=pattern2.findall(s_extend)
        id_num=num[0]
        if id_num in num_list:
            pass
        else:
            num_list.append(num[0])
        #print(i,s_extend,num)
def getdetail2():
    basic_url='https://book.douban.com/subject/'
    for i in num_list:
    #i=3894821
    #if i==3894821:
        url=basic_url+str(i)
        res=requests.get(url)
        #f=open('book.html',"w",encoding='utf-8')  
        #f.write(res.text)
        soup=BeautifulSoup(res.text,'html.parser')
        #获取id
        id_detail=str(i)
        #获取书名
        bookname=soup.select('title')
        bookname_detail=bookname[0].text
        bookname_detail=bookname_detail.split('(')[0]
        #print(bookname_detail)
        #获取作者名
        author=soup.select('#info a')
        if len(author)>0:
            author_detail_list=author[0].text.split('\n')
            #print(author_detail_list)
            if len(author_detail_list)==3:
                author_detail=author_detail_list[2].strip()+author_detail_list[1].strip()
            elif len(author_detail_list)==2:
                author_detail=author_detail_list[1].strip()
            else:
                author_detail=author[0].text
        print(author_detail,author_detail_list)
        #print(author_detail)
        #print(soup)
        #获取简介
        intro=soup.select('.related_info .intro')
        if len(intro)>0:
            summary_detail=intro[0].text
        else:
            summary_detail=''
        #获取评分
        rating_num=soup.select('.rating_num')
        rating_num_detail=rating_num[0].text
        #获取目录
        id_dir='#dir_'+str(i)+'_full'
        catg=soup.select(id_dir)
        if len(catg)>0:
            catg_detail=catg[0].text
        else:
            catg_detail=''
        book.append(u'编号:'+id_detail+'\n'+
                     u'评分'+rating_num_detail+'\n'+
                     u'书名:'+bookname_detail+'\n'+
                     u'作者:'+author_detail+'\n'+
                     u'简介'+summary_detail+'\n'+
                     u'目录'+catg_detail+'\n')
        data_book=(id_detail,
                   rating_num_detail,
                   bookname_detail,
                   author_detail,
                   summary_detail,
                   catg_detail
                   )
        book_data_list.append(data_book)

def to_frame():
    data={"id":[],
          'rating_num':[],
          'bookname':[],
          'author':[],
          'summary':[],
          'catalogue':[]}
    frame_title=["id",
          'rating_num',
          'bookname',
          'author',
          'summary',
          'catalogue']
    for b in book_data_list:
        for no in range(6):
            data[frame_title[no]].append(b[no])
    frame=pd.DataFrame(data)
    frame.index=frame['id'].tolist()
    return frame

def clouds(frame,key_word):
    comments=frame[key_word]
    stop_words=set(line.strip() for line in open('stopwords.txt',encoding='utf-8'))
    commentlist=[]
    for comment in comments:
        word_list=pseg.cut(comment)
        #print(word_list)
        for word,flag in word_list:
            if not word in stop_words and flag=='n':
                commentlist.append(word)
    pic_name='word_cloud'+key_word+'.jpg'
    back_coloring=imread("jew_man.png")
    content=' '.join(commentlist)
    if len(content)>0:
        wordcloud = WordCloud(font_path='simhei.ttf',mask=back_coloring,max_words=100,background_color="white").generate(content)
        image_colors=ImageColorGenerator(back_coloring)
        plt.gcf().set_size_inches(20,20)
        plt.imshow(wordcloud.recolor(color_func=image_colors))
        plt.axis("off")
        wordcloud.to_file(pic_name)
        plt.show()
        
    
for i in urllist:
    getcontent(i)

getdetail()
'''
print(num_list)
#print(id_list)
f = open('title.txt',"w",encoding='utf-8')
f.write('\n'.join(title_list))
g=open('href.txt',"w")
g.write('\n'.join(book_href_list))
#print(num_list)
'''
getdetail2()
frame=to_frame()
frame.to_excel("fake_jew_books.xlsx")
key_words=['bookname',
          'summary',
          'catalogue']

#for kw in key_words:
    #clouds(frame,kw)

猜你喜欢

转载自blog.csdn.net/qq_36403658/article/details/80484796
今日推荐