作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2881

1. 简单说明爬虫原理

爬虫简单来说就是通过程序模拟浏览器放松请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,通过一些算法进而提取自己需要的数据,存放起来使用。

2. 理解爬虫开发过程

1).简要说明浏览器工作原理;

2).使用 requests 库抓取网站数据;

requests.get(url) 获取校园新闻首页html代码

import requests
url = 'http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'
res = requests.get(url)
type(res)
res.encoding ='utf-8'
soupn = BeautifulSoup(res.text,'html.parser') # html 规格打印
print(soupn)

截图:

3).了解网页

写一个简单的html文件,包含多个标签,类,id

html_sample = ' \
<html> \
<body> \
<h1 id="title">Hello</h1> \
<a href="#" class="link"> This is link1</a>\
<a href="# link2" class="link" qao=123> This is link2</a>\
</body> \
</html> '
# 各种查询方式
a = soupn.select('a') # 使用标签节点a查询
ids = soupn.select('#id') # 使用id号查询
classs = soupn.select('.class') # 使用class类查询
print(a,ids,classs)

  

4).使用 Beautiful Soup 解析网页;

通过BeautifulSoup(html_sample,'html.parser')把上述html文件解析成DOM Tree

select(选择器)定位数据

找出含有特定标签的html元素

找出含有特定类名的html元素

找出含有特定id名的html元素

idchaxun = soupn.select('#content')[0].text
biaoqianchaxun = soupn.select('img')[0]['src']
leichaxun = soupn.select('.show-info')[0].text
print(idchaxun,biaoqianchaxun,leichaxun)

截图:

3.提取一篇校园新闻的标题、发布时间、发布单位、作者、点击次数、内容等信息

如url = 'http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'

要求发布时间为datetime类型,点击次数为数值型,其它是字符串类型。

下载:requests、BeautifulSoup4库

获取网页游览次数请求的url:

clickUrl='http://oa.gzcc.cn/api.php?op=count&id=11029&modelid=80'
b = requests.get(clickUrl).text
b2 = requests.get(clickUrl).text.split('.html')[-1]
print(b2)

 完整代码:

from datetime import datetime

import requests
from bs4 import BeautifulSoup
url = 'http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'
res = requests.get(url)
type(res)
res.encoding = 'utf-8'
soupn = BeautifulSoup(res.text,'html.parser') # html 规格打印 q = soupn.title.text # 标题
soupn1 = soupn.select('.show-info')[0].text # 作者与发布时间等信息 # 时间转化为datetime类型
time1 = soupn.select('.show-info')[0].text.split()[0].split(':')[1]
time2 = soupn.select('.show-info')[0].text.split()[1]
Time = time1 + ' ' + time2
Time1 = datetime.strptime(Time, '%Y-%m-%d %H:%M:%S')
Time2 = datetime.strftime(Time1, '%Y{y}-%m{m}-%d{d} %H{H}%M{M}%S{S}').format(y='年', m='月', d='日', H='时', M='分', S='秒') Zuozhe = soupn.select('.show-info')[0].text.split()[2] # 作者
shenhe = soupn.select('.show-info')[0].text.split()[3] # 审核
laiyuan = soupn.select('.show-info')[0].text.split()[4] # 来源 # 游览次数
clickUrl='http://oa.gzcc.cn/api.php?op=count&id=11029&modelid=80'
b = requests.get(clickUrl).text.split('.html')[-1] # 获取总游览次数
sel = "();''"
for i in sel:
b = b.replace(i, '') zhengwen = soupn.select('.show-content')[0].text print("\n"+"标题:"+q+"\n"+"发布时间:"+Time2+"\n"+
Zuozhe+"\n"+shenhe+"\n"+laiyuan+"\n"+
"游览次数:"+b+"\n"+"正文:"+zhengwen)

效果截图:

菜鸟学IT之python网页爬取初体验的更多相关文章

  1. 菜鸟学IT之python网页爬取多页爬取

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3002 0.从新闻url获取点击次数,并整理成函数 newsUrl news ...

  2. 菜鸟学IT之豆瓣爬取初体验

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159 可以用pandas读出之前保存的数据: newsdf = pd.re ...

  3. python 网页爬取数据生成文字云图

    1. 需要的三个包: from wordcloud import WordCloud #词云库 import matplotlib.pyplot as plt #数学绘图库 import jieba; ...

  4. python之爬取网页数据总结(一)

    今天尝试使用python,爬取网页数据.因为python是新安装好的,所以要正常运行爬取数据的代码需要提前安装插件.分别为requests    Beautifulsoup4   lxml  三个插件 ...

  5. python连续爬取多个网页的图片分别保存到不同的文件夹

      python连续爬取多个网页的图片分别保存到不同的文件夹 作者:vpoet mail:vpoet_sir@163.com #coding:utf-8 import urllib import ur ...

  6. Python和BeautifulSoup进行网页爬取

    在大数据.人工智能时代,我们通常需要从网站中收集我们所需的数据,网络信息的爬取技术已经成为多个行业所需的技能之一.而Python则是目前数据科学项目中最常用的编程语言之一.使用Python与Beaut ...

  7. 大神:python怎么爬取js的页面

    大神:python怎么爬取js的页面 可以试试抓包看看它请求了哪些东西, 很多时候可以绕过网页直接请求后面的API 实在不行就上 selenium (selenium大法好) selenium和pha ...

  8. python定时器爬取豆瓣音乐Top榜歌名

    python定时器爬取豆瓣音乐Top榜歌名 作者:vpoet mail:vpoet_sir@163.com 注:这些小demo都是前段时间为了学python写的,现在贴出来纯粹是为了和大家分享一下 # ...

  9. python大规模爬取京东

    python大规模爬取京东 主要工具 scrapy BeautifulSoup requests 分析步骤 打开京东首页,输入裤子将会看到页面跳转到了这里,这就是我们要分析的起点 我们可以看到这个页面 ...

随机推荐

  1. 每日分享!~ 使用js原生方式对拖拉元素(鼠标的事件)

    一个元素放置页面上.如何进行拖拉,实现想放哪里就放哪里的效果呢? 效果如下: 如果让你写这个效果,你会如何写呢? --- 思路分析:我首先想到的是,对这个元素先绑定一个事件.(什么事件? 那当然是鼠标 ...

  2. Cache【硬盘缓存工具类(包含内存缓存LruCache和磁盘缓存DiskLruCache)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 内存缓存LruCache和磁盘缓存DiskLruCache的封装类,主要用于图片缓存. 效果图 代码分析 内存缓存LruCache和 ...

  3. tcc-transaction 分析

    tcc-transaction是TCC型事务java实现,具体项目地址  点我.本文通过tcc-transaction和Springcloud,分析下tcc-transaction的原理. 要了解一个 ...

  4. 学习ASP.NET Core Razor 编程系列十九——分页

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  5. Flutter 即学即用系列博客——03 在旧有项目引入 Flutter

    前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flu ...

  6. ajax的嵌套需要注意的问题

    当我们要嵌套ajax的时候,需要注意 异步/同步 的处理,一般是要设置成同步,如果是异步,那么被嵌套的ajax的操作很可能获取不到想要的值,因为他可能比嵌套他的ajax跑的更早 在ajax中有一个as ...

  7. GOF23种设计模式概括

    GOF23种设计模式分为三种: 创建型模式[工厂方法模式]结构型模式[(类)适配器模式]行为型模式[ 解释器模式,模板方法模式]   创建型模式Creational Patterns抽象工厂模式abs ...

  8. Java建造(Builder)模式

    一.什么是建造模式: 建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而使一个建造过程生成具有不同内部表象的产品.客户端不需要知道产品内部的结构和生产过程. 二.建造模式的结构: Buil ...

  9. jsp内置对象-exception对象

    1.概念:当JSP页面发生错误产生异常时,使用隐含对象exception针对该异常做出相应的处理.使用exception对象时,需要在page指令中设定:<%@page isErrorPage= ...

  10. 持续集成之 Spring Boot 实战篇

    本文作者: CODING 用户 - 何健 这次实战篇,我们借助「CODING 持续集成」,实现一个简单的 Spring Boot 项目从编码到最后部署的完整过程.本教程还有 B 站视频版,帮助读者更好 ...