爬虫大作业

import requests
import re
from bs4 import BeautifulSoup
import jieba.analyse
from PIL import Image, ImageSequence
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator

# 获取总页数
def getnum(url):
    res = requests.get(url)
    res.encoding = ‘gb2312‘
    soup = BeautifulSoup(res.text, ‘html.parser‘)
    Info = soup.select(".page-next")[0].extract().text
    TotalNum = re.search("共(\d+)页.*",Info).group(1)
    return TotalNum

#获取单个页面所有链接
def getpageurl(url):
    res = requests.get(url)
    res.encoding = ‘gb2312‘
    soup = BeautifulSoup(res.text, ‘html.parser‘)
    a = soup.select(".list-page ul")
    for i in soup.select(".list-page ul li"):
        if len(i.select("a"))>0:
            info = i.select("a")[0].attrs[‘href‘]
            pageurl = ‘http://www.ckck.tv/‘ + info
            print(pageurl)
            getinfromation(pageurl)
# 获取页面的信息
def getinfromation(url):
    res = requests.get(url)
    res.encoding = ‘gb2312‘
    soup = BeautifulSoup(res.text, ‘html.parser‘)
    a = soup.select(".content .movie ul h1")[0].text
    print("电影:",a)
    b = soup.select(".content .movie ul li")[1].text
    name = re.search("【主 演】:(.*)",b).group(1)
    print("主演:",name)
    c = soup.select(".content .movie ul li")[4].text
    date = re.search("【年 代】:(.*)  【地 区】:", c).group(1)
    print("年代:", date)
    diqu = re.search("【地 区】:(.*)", c).group(1)
    print("地区:",diqu)
    # 将标签内容写入文件
    f = open(‘gzccNews.txt‘, ‘a‘, encoding=‘utf-8‘)
    f.write(a )
    f.write(name )
    f.write(date )
    f.write(diqu)
    f.write("\n")
    f.close()

# 生成词云
def getpicture():
    lyric = ‘‘
    f = open(‘gzccNews.txt‘, ‘r‘, encoding=‘utf-8‘)
    for i in f:
        lyric += f.read()

    result = jieba.analyse.textrank(lyric, topK=50, withWeight=True)
    keywords = dict()
    for i in result:
        keywords[i[0]] = i[1]
    print(keywords)

    image = Image.open(‘input.jpg‘)
    graph = np.array(image)
    wc = WordCloud(font_path=‘./fonts/simhei.ttf‘, background_color=‘White‘, max_words=50, mask=graph)
    wc.generate_from_frequencies(keywords)
    image_color = ImageColorGenerator(graph)
    plt.imshow(wc)
    plt.imshow(wc.recolor(color_func=image_color))
    plt.axis("off")
    plt.show()
    wc.to_file(‘output.png‘)

url = ‘http://www.ckck.tv/xj/Index.html‘
a = getnum(url)
getpageurl(url)
for i in range(2,int(a)):
     page = ‘http://www.ckck.tv/xj/List_4_{}.html‘.format(i)
     getpageurl(page)
getpicture()

首先定义获取总页面、获取页面所有链接、获取页面信息、生成词云等的函数,过程中就是获取所有页面所有链接出现点问题,归结于找标签问题。这次爬取的是一个电影网站,将网站里面的电影名、主演、年代、地区,然后进行词云生成

原文地址:https://www.cnblogs.com/qq974975766/p/8909008.html

时间: 2024-10-29 19:52:11

爬虫大作业的相关文章

爬虫大作业~以爬取hao123漫画为例

一.准备过程 首先打开hao123漫画筛选区,网址是https://www.hao123.com/manhua/list/?finish=&audience=&area=&cate=&order=1 在这里可以通过审查模式看到第一页的详细信息,而目的则是通过爬取漫画筛选页面的每部漫画的人气与题材来分析最近漫画迷的观漫需求 环境如下: python3.6.2 PyCharm Windows8.1 第三方库(jieba,wordcloud,bs4,Requests,re,wor

爬虫大作业-爬区a9vg电玩部落ps4专区

1.选一个自己感兴趣的主题或网站.(所有同学不能雷同) 2.用python 编写爬虫程序,从网络上爬取相关主题的数据. def writeNewsDetail(content): f = open('a9vg.txt','a',encoding='utf-8') f.write(content) f.close() def getNewsDetail(url): res2 = requests.get(url) res2.encoding = 'utf-8' soup2 = BeautifulS

爬虫大作业(虎扑足球新闻)

import requests from bs4 import BeautifulSoup import jieba from PIL import Image,ImageSequence import numpy as np import matplotlib.pyplot as plt from wordcloud import WordCloud,ImageColorGenerator def changeTitleToDict(): f = open('yingchao.txt', 'r

Hadoop大作业

---恢复内容开始--- 1.用Hive对爬虫大作业产生的文本文件(或者英文词频统计下载的英文长篇小说)进行词频统计. 先启动Hadoop. jps查看各个服务已启动,进入hive 把本地文件上传到hdfs文件系统(这里本来是打算把预先准备的英文小说上传上去,但是不知道为什么一直提示找不到文件,然后发现帮助文档和注意文档的内容量也不小,所以直接拿来做词频统计也是不错的.) 建个表docs 把hdfs文件系统中input文件夹里的文本文件load进去,写hiveQL命令统计 统计成功提示 使用se

Hadoop综合大作业

1.用Hive对爬虫大作业产生的文本文件(或者英文词频统计下载的英文长篇小说)进行词频统计. 启动Hadoop start-all.sh 把本地文件上传到hdfs文件系统,然后查看(之前已经把下载的英文小说上传到hdfs了) hdfs dfs -ls input 启动hive hive 建立表docs create table docs(line string); 把hdfs文件系统中input文件夹里的文本文件load进去,写hiveQL命令统计 load data inpath 'input

[现代信息检索]搜索引擎大作业

[现代信息检索]搜索引擎大作业 一.题目要求: 新闻搜索:定向采集3-4个体育新闻网站,实现这些网站信息的抽取.索引和检索.网页数目不少于10万条.能按相关度.时间.热度(需要自己定义)等属性进行排序,能实现相似新闻的自动聚类. 二.题目分析 题目分析:我们将任务分解为四个部分:新闻数据的爬取.倒排索引的构建.向量空间模型的实现 和 前端界面. 主要分为四个模块:网络爬虫.构建索引.文档评分.排序显示.其中模块与模块之间又包含一些子模块,包括:网页信息抽取.数据存储.文本分析.tf-idf 权重

《Java语言程序设计》大作业报告 九宫格游戏

    <Java语言程序设计>大作业报告     中国石油大学(北京)2015 - 2016 学年第二学期     班级:_____计算机14-1_______ 姓名:_____  许 恺_________________ 学号:______2014011329___________     题意分析 程序首先需要九个可以移动的格子,大小相等,有字符串标示,其次要可以相应鼠标和键盘方向键的控制,可以自由移动,并且与此同时记录步数,最后在满足条件时弹出对话框并显示步数以及是否打破记录,关于打破

数据库大作业--由python+flask

这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是想学习flask还是推荐之前的项目,地址:http://www.cnblogs.com/INnoVationv2/p/5837495.html 寒假回去我会重构下代码,然后再po出来. 不知道怎么做数据库大作业的也可以参考: 所有功能: 三类用户模式: 一.管理员 1.查看所有档案 2.修改档案信息

机电传动控制大作业第一阶段

机电传动控制大作业第一阶段 一.系统硬件接口定义 系统硬件可分为显示部分.按键输入部分和运动控制部分. 显示部分包括每个楼层的电梯外的楼层显示LED和上下楼指示箭头.电梯内的楼层显示LED和上下楼箭头,LED显示如果用七段共阴数码管则每个LED需要七个继电器来控制显示字符,上下楼箭头每个需要两个继电器IO进行控制,而控制它们的信号源则来自每层楼的行程开关,共七个开关进行输入. 按键输入部分为电梯内和楼层中,电梯内七个常开触点输入楼层,两个常开触点控制开关门,同时需要点亮楼层按键上的指示灯,则需要