zoukankan      html  css  js  c++  java
  • 爬虫大作业

    1.选一个自己感兴趣的主题。

    2.用python 编写爬虫程序,从网络上爬取相关主题的数据。

    3.对爬了的数据进行文本分析,生成词云。

    4.对文本分析结果进行解释说明。

    5.写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。

    6.最后提交爬取的全部数据、爬虫及数据分析源代码。

    因为我比较喜欢看言情类小说,这里我选择了小说红袖添香网作为数据爬取网站

    # -*- coding: UTF-8 -*-
    # -*- author: yjw -*-
    from bs4 import BeautifulSoup
    import requests
    import jieba
    import time
    import datetime
    for i in range(1,10):
        res = requests.get('https://www.hongxiu.com/all?pageSize=10&gender=2&catId=-1&isFinish=-1&isVip=-1&size=-1&updT=-1&orderBy=0&pageNum='+str(i))
        res.encoding='utf-8'
        soup = BeautifulSoup(res.text, 'html.parser')
    
    def save():
        file_name = '红袖网'
        with open(file_name+'.txt', 'a') as file:
            num = 1
            for booklist in hongxiulist:
                file.write('
    ')
                file.write('#' + str(num) +'. ' + booklist.title)
                file.write('
    ')
                file.write('书名:{0}
    作者:{1}
    类型:{2}
    状态:{3}
    字数:{4}
    描述:{5}
    
    书本图片:{6}
    书本网址:{7}
    '.format(booklist.title,booklist.author,booklist.style,booklist.state,booklist.wordcount,booklist.abstract,booklist.imgurl,booklist.bookurl))
                file.write('-*' * 100)
                file.write('
    ')
                num = num + 1
    # /定义一个数据存储类,那么在创建类的实例的时候,实例会自动调用init方法
    class Info(object):
        def __init__(me, title, author, style, state, wordcount, abstract, imgurl, bookurl):
            me.title = title
            me.author = author
            me.style = style
            me.state = state
            me.wordcount = wordcount
            me.abstract = abstract
            me.imgurl = imgurl
            me.bookurl = bookurl
    
    for i in range(1,11):
        res = requests.get('https://www.hongxiu.com/all?pageSize=10&gender=2&catId=-1&isFinish=-1&isVip=-1&size=-1&updT=-1&orderBy=0&pageNum='+str(i))
        res.encoding='utf-8'
        soup = BeautifulSoup(res.text, 'html.parser')
        hongxiu = soup.find('div', class_='right-book-list')
        hongxiulist = []
        for list in hongxiu.find_all('li'):
            listinfo = list.find('div', class_='book-info')
            listinfo_href = listinfo.find('a')
            title = listinfo_href.text
            author = listinfo.find(class_='default').string.strip()
            style = listinfo.find(class_='org').string.strip()
            state = listinfo.find(class_='pink').string.strip()
            wordcount = listinfo.find(class_='blue').string.strip()
            abstract = listinfo.find(class_='intro').string.strip()
            img = list.find('div', class_='book-img')
            imgurl= 'https:'+img.find('img')['src'].strip()
            bookurl = 'https://www.hongxiu.com'+listinfo_href['href'].strip()
            booklist = Info(title, author, style, state, wordcount, abstract, imgurl, bookurl)
            hongxiulist.append(booklist)
            for booklist in hongxiulist:
                print('-*' * 100)
                print('书名:{0}
    作者:{1}
    类型:{2}
    状态:{3}
    字数:{4}
    描述:{5}
    
    书本图片:{6}
    书本网址:{7}
    '.format(booklist.title,
                                                                                                      booklist.author,
                                                                                                      booklist.style,
                                                                                                      booklist.state,
                                                                                                      booklist.wordcount,
                                                                                                      booklist.abstract,
                                                                                                      booklist.imgurl,
                                                                                                      booklist.bookurl))
                save()

    爬取了全部分类前十页目录的数据

    结果截图:

    1.

    2.

    3.

    4.

    一开始遇到一点问题,就是开发者模式爬到的a标签里面的href(书本url以及图片url)是相对路径,于是我从network里面找到真正的路径,用本方法加上路径的前缀。

    一开始不知道init方法以及findall的具体用法,寻找了同学以及上网寻找资料解决了问题。

    从数据可以看出很多言情小说都以霸道总裁为主要题材,配以情深,婚姻等吸引读者观看。也可能正因如此,最近的霸道总裁类型市场基本饱和,读者的口味也慢慢改变,以后可能不再是霸道总裁占大头了

  • 相关阅读:
    如何让ListView的item不可点击
    [Android] ListView中如何让onClick和onItemClick事件共存
    [Android] RelativeLayout, LinearLayout,FrameLayout
    [Android]drawable-nodpi文件夹 的作用
    [转]安装和使用JD-Eclipse插件
    jmeter下载及安装配置
    MySql安装后在服务管理器里边找不到MySql服务项的解决办法
    两步破解IntelliJ IDEA 教程(无敌版)
    进程和线程区别和联系
    webservice--cxf和spring结合,发布restFull风格的服务
  • 原文地址:https://www.cnblogs.com/yjwamao/p/8974573.html
Copyright © 2011-2022 走看看