1.选一个自己感兴趣的主题(所有人不能雷同)。

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

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

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

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

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

本次选的主题是通过爬取雷锋网业界模块的所有新闻的作者,统计出哪个作者在这里发表文章最多,

1.首先,要获取到每条新闻的url,代码如下

def getNewsUrl(newsurl):

res = requests.get(newsurl)

res.encoding = 'utf-8'

soup = BeautifulSoup(res.text, 'html.parser')

list = soup.select('.list')[0].select('li')

allnewsList = []

for news in list:

newsList = []

NewUrl = news.select('.img')[0].select('a')[1].attrs['href']

newsList=getListPage(NewUrl)

print(newsList)

allnewsList.append(newsList)

return allnewsList

2.通过上面的url,获取到每条新闻的详细信息,代码如下

def getListPage(NewUrl):

res = requests.get(NewUrl)

res.encoding = 'utf-8'

soup = BeautifulSoup(res.text, 'html.parser')

list = soup.select('.article-template')

newList =[]

new = {}

new['题目'] = soup.select('.article-template')[0].select('h1')[0].text.strip()

new['作者'] = soup.select('.article-template')[0].select('a')[0].text

new['时间'] = soup.select('.article-template')[0].select('.time')[0].text.strip()

new['导语'] = soup.select('.article-template')[0].select('.article-lead')[0].text.strip()

a = soup.select('.article-template')[0].select('p')

# print(new)

newList.append(new)

for i in range(0,len(a)-2):

content = a[i].text;

title = soup.select('.article-template')[0].select('a')[0].text

writeNewsContent(title)

return newList

3.通过获取总页数

def getPageN():

res = requests.get('https://www.leiphone.com/category/sponsor')

res.encoding = "utf-8"

soup = BeautifulSoup(res.text, 'html.parser')

n = int(soup.select('.pages')[0].select('a')[4].text)

return n

n=getPageN();

4.获取所有新闻的信息

allnewList = []

for i in range(1,n+1):

newsList = []

newsurl = 'https://www.leiphone.com/category/sponsor/page/{}'.format(i)

print(newsurl)

newsList = getNewsUrl(newsurl)

allnewList.append(newsList)

5.把所有新闻的作者都写入到txt文档

def writeNewsContent(title):

f=open('gzccNews.txt','a',encoding='utf-8')

f.write(title)

f.close()

6.对txt文档里的信息进行统计

import jieba

f = open('gzccNews.txt', 'r', encoding='utf-8')

text = f.read()

f.close()

jieba.add_word('归〇')

jieba.add_word('新智造')

jieba.add_word('刘芳平')

jieba.add_word('吕倩')

jieba.add_word('木子')

jieba.add_word('李诗')

jieba.add_word('Jennings_Zhu')

jieba.add_word('包永刚')

jieba.add_word('王金许')

jieba.add_word('李赓')

jieba.add_word('Dude')

jieba.add_word('温晓桦')

jieba.add_word('李雨晨')

jieba.add_word('思颖')

jieba.add_word('李智勇')

jieba.add_word('咲甜')

jieba.add_word('陈伊莉')

jieba.add_word('彭赛琼')

jieba.add_word('camel')

jieba.add_word('赵青晖')

jieba.add_word('Alter')

jieba.add_word('聊IT')

jieba.add_word('大公司日报')

jieba.add_word('又田')

jieba.add_word('跃斌')

jieba.add_word('奕欣')

jieba.add_word('张驰')

punctuation = ''',。‘’“”:;()!?、 '''

a = {'\n','子','张','秀琴','李秀','归','〇','亚','金','峰','亮','恒','赓','程','弢','木子李','三','大'}

for i in punctuation:

text = text.replace(i,'')

tempwords = list(jieba.cut(text))

count = {}

words = list(set(tempwords) - a)

for i in range(0, len(words)):

count[words[i]] = text.count(str(words[i]))

countList = list(count.items())

countList.sort(key=lambda x: x[1], reverse=True)

print(countList)

f = open('b.txt', 'a')

for i in range(20):

f.write(countList[i][0] + ':' + str(countList[i][1]) + '\n')

f.close()

遇到问题及解决办法

1.在爬取数据的时候没有什么大的难度,就是有时候会出现类似于这个网站的通知,解决方法是吧所有相同的元素用一个链表包起来,然后删掉那些通知所在的元素给删掉

2.因为对词云库的安装方法不是很了解,网上看到资料也是五花八门,所以在这次的作业里,我依旧是延续了用jieba统计出发表文章最多的20个作者

结论:

通过对统计结果进行分析,发现木子发表的文章最多,所以我们可以得出这样一个结论,这位作者可能对业界有着很多独特见解,所以我们可以通过阅读他的文章去认识他的见解

爬取的全部数据、爬虫及数据分析源代码:

new.py

import requests

import re

from datetime import datetime

from bs4 import BeautifulSoup

import openpyxl

import pandas

# print(NewUrl)

# getNewsUrl('https://www.leiphone.com/category/sponsor/page/1')

def writeNewsContent(title):

f=open('gzccNews.txt','a',encoding='utf-8')

f.write(title)

f.close()

#获取新闻详情

def getListPage(NewUrl):

res = requests.get(NewUrl)

res.encoding = 'utf-8'

soup = BeautifulSoup(res.text, 'html.parser')

list = soup.select('.article-template')

newList =[]

new = {}

new['题目'] = soup.select('.article-template')[0].select('h1')[0].text.strip()

new['作者'] = soup.select('.article-template')[0].select('a')[0].text

new['时间'] = soup.select('.article-template')[0].select('.time')[0].text.strip()

new['导语'] = soup.select('.article-template')[0].select('.article-lead')[0].text.strip()

a = soup.select('.article-template')[0].select('p')

# print(new)

newList.append(new)

for i in range(0,len(a)-2):

content = a[i].text;

title = soup.select('.article-template')[0].select('a')[0].text

writeNewsContent(title)

return newList

#获取详情url

def getNewsUrl(newsurl):

res = requests.get(newsurl)

res.encoding = 'utf-8'

soup = BeautifulSoup(res.text, 'html.parser')

list = soup.select('.list')[0].select('li')

allnewsList = []

for news in list:

newsList = []

NewUrl = news.select('.img')[0].select('a')[1].attrs['href']

newsList=getListPage(NewUrl)

print(newsList)

allnewsList.append(newsList)

return allnewsList

#获取总页数

def getPageN():

res = requests.get('https://www.leiphone.com/category/sponsor')

res.encoding = "utf-8"

soup = BeautifulSoup(res.text, 'html.parser')

n = int(soup.select('.pages')[0].select('a')[4].text)

return n

n=getPageN();

allnewList = []

for i in range(1,n+1):

newsList = []

newsurl = 'https://www.leiphone.com/category/sponsor/page/{}'.format(i)

print(newsurl)

newsList = getNewsUrl(newsurl)

allnewList.append(newsList)

jieba.py

import jieba

f = open('a.txt', 'r', encoding='utf-8')

text = f.read()

f.close()

jieba.add_word('归〇')

jieba.add_word('新智造')

jieba.add_word('刘芳平')

jieba.add_word('吕倩')

jieba.add_word('木子')

jieba.add_word('李诗')

jieba.add_word('Jennings_Zhu')

jieba.add_word('包永刚')

jieba.add_word('王金许')

jieba.add_word('李赓')

jieba.add_word('Dude')

jieba.add_word('温晓桦')

jieba.add_word('李雨晨')

jieba.add_word('思颖')

jieba.add_word('李智勇')

jieba.add_word('咲甜')

jieba.add_word('陈伊莉')

jieba.add_word('彭赛琼')

jieba.add_word('camel')

jieba.add_word('赵青晖')

jieba.add_word('Alter')

jieba.add_word('聊IT')

jieba.add_word('大公司日报')

jieba.add_word('又田')

jieba.add_word('跃斌')

jieba.add_word('奕欣')

jieba.add_word('张驰')

punctuation = ''',。‘’“”:;()!?、 '''

a = {'\n','子','张','秀琴','李秀','归','〇','亚','金','峰','亮','恒','赓','程','弢','木子李','三','大'}

for i in punctuation:

text = text.replace(i,'')

tempwords = list(jieba.cut(text))

count = {}

words = list(set(tempwords) - a)

for i in range(0, len(words)):

count[words[i]] = text.count(str(words[i]))

countList = list(count.items())

countList.sort(key=lambda x: x[1], reverse=True)

print(countList)

f = open('b.txt', 'a')

for i in range(20):

f.write(countList[i][0] + ':' + str(countList[i][1]) + '\n')

f.close()

python爬虫大作业爬多少数据_爬虫大作业相关推荐

  1. python登录网站后爬取数据_用 Python 登录主流网站,我们的数据爬取少不了它

    不论是自然语言处理还是计算机视觉,做机器学习算法总会存在数据不足的情况,而这个时候就需要我们用爬虫获取一些额外数据.这个项目介绍了如何用 Python 登录各大网站,并用简单的爬虫获取一些有用数据,目 ...

  2. python登录网站后爬取数据_快速爬取登录网站数据

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 部分网站需要登录才能允许访问,因此爬虫需要获取登录cookie,然后通过爬虫代理使用该cookie进行数据采集.本示例按照以上流程进行实现如下: 1 模拟 ...

  3. python登录网站后爬取数据_如何用 Python 登录主流网站,爬取一些需要的数据

    最近收集了一些网站的登陆方式和爬虫程序,有的通过 selenium 登录,有的则通过抓包直接模拟登录.作者希望该项目能帮助初学者学习各大网站的模拟登陆方式,并爬取一些需要的数据. 作者表示模拟登陆基本 ...

  4. python登录网站后爬取数据_需要登陆网站后才能获取数据的页面爬取

    本文转载自以下链接:https://www.makcyun.top/web_scraping_withpython8.html 目的是万一博主网站无法访问到的话自己需要学习的东西可就不存在了. 本文需 ...

  5. python自动登录网站爬取数据_Python爬虫实战:自动化登录网站,爬取商品数据

    前言 随着互联网时代的到来,人们更加倾向于互联网购物.某东又是电商行业的巨头,在某东平台中有很多商家数据.今天带大家使用python+selenium工具获取这些公开的商家数据 适合阅读人群:sele ...

  6. [网络爬虫|smtp协议|python]东方财富网爬虫,python smtp协议发送爬取数据至QQ邮箱

    本文改自 [网络爬虫|smtp协议|python]东方财富网爬虫,python smtp协议发送爬取数据至QQ邮箱 之前写的爬虫单子,代码已经跑了快3个月了,后续又增加了一些需求,修改了一些小bug ...

  7. python爬虫爬当当网_爬虫实战一:爬取当当网所有 Python 书籍

    本文转载自微信公众号[ 极客猴 ],作者知乎主页 此前错误标注来源导致侵权,在此表示歉意. 我们已经学习 urllib.re.BeautifulSoup 这三个库的用法.但只是停留在理论层面上,还需实 ...

  8. Python数据分析:爬虫从网页爬取数据需要几步?

    对于数据分析师来说,数据获取通常有两种方式,一种是直接从系统本地获取数据,另一种是爬取网页上的数据,爬虫从网页爬取数据需要几步?总结下来,Python爬取网页数据需要发起请求.获取响应内容.解析数据. ...

  9. Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索

    Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索 一.资源 为什么接下来的代码中要使用el.getElementsByTa ...

最新文章

  1. js使用ajax发送post json,javascript-如何用ajaxpost复杂json数据
  2. pepflashplayer32_25_0_0_127.dll: 0x59952C6D is not a valid instance ID.
  3. 1019. 数字黑洞 (20)
  4. java多核并行计算_谈谈Java任务的并行处理
  5. mySQL 数据库错误
  6. 计算机公共基础知识实验报告,20140902413 李雪瑞 计算机工程系实验报告345.docx...
  7. android 清理工具,Android 版 Avira Optimizer 是 Android 手機清理工具
  8. HDU 3709 Balanced Number(数位DP)题解
  9. 使DIV水平和垂直居中
  10. H3C简单FTP上传和下载文件
  11. Request 请求转发
  12. 从零到百亿互联网金融架构发展史
  13. SpringMVC文件上传和Jwt身份验证
  14. zic - 时区编辑器
  15. c# word文档基本操作 (上)
  16. 组合数学4-全排列生成算法
  17. IEEE论文参考文献格式
  18. 网站被篡改怎么办?如何防护网站被黑
  19. 玩转qq轻聊版聊天记录
  20. 2021年中式烹调师(中级)模拟试题及中式烹调师(中级)模拟考试

热门文章

  1. angularJS表达式详解!
  2. [安卓] 2、使用2中方法做按钮监听和图片按钮使用
  3. java jdialog 模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog
  4. sentinel的资料整理
  5. 手机号中间四位星号显示
  6. Linux Suspend过程【转】
  7. cacti配置流量汇总
  8. HTML-DOM零碎
  9. mysql配置文件改密码_mysql8.0 安装教程(自定义配置文件,密码方式已修改)
  10. android源码编译出错的原因