作业来源: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. HandlerInterceptor里@Autowired对象为空的解决方法

    That's because Spring isn't managing your PagePopulationInterceptor instance. You are creating it yo ...

  2. HTTP Get与Post的本质区别

    作者:Larry链接:https://zhuanlan.zhihu.com/p/22536382来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. GET和POST是HTT ...

  3. Web项目也能一键打包Android、IOS

    随着移动互联网的不断发展,智能手机配置的不断提高,越来越多的年轻人基本都在使用手机,如微信.支付宝等等.已基本成为一种习惯,坐电梯也好.吃饭也好.开车也好,基本都捧着一个手机在那按来按去,开车就不建议 ...

  4. C#,记录--一个方法中,完成对数据增删改操作

    实际应用中,一般不会使用delete彻底的删除数据,大多都是逻辑删除 为了不把本文写成小作文,举个小栗子吧 表 A,deletestate为置删除字段,int类型,值为0和1 表中五条数据 查询 se ...

  5. 浅谈Quartz.Net 从无到有创建实例

    一.Quartz.Net介绍 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或 ...

  6. Java 8中Stream API学习笔记

    1)函数式编程的优势和劣势分别是什么?优势:①不可变性 ②并行操作 ③执行顺序更灵活 ④代码更加简洁纯粹的函数式编程,变量具有不可变性,同一个参数不会在不同场景下得出不同的结果,因此大大增强了系统的稳 ...

  7. Poj1477

    Box of Bricks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24101   Accepted: 9378 De ...

  8. 折腾Java设计模式之观察者模式

    观察者模式 Define a one-to-many dependency between objects where a state change in one object results in ...

  9. Django 无名参数与有名参数

    无名参数 配置 urls ,我们需要导入 url 模块,以()定义一个无名的变量 from django.contrib import admin from django.urls import pa ...

  10. iframe中的a标签电话链接不能正常打开

    背景 经测试,android手机中没有这个问题, iphone手机中的Safari浏览器会出现这个问题. 例如: <a href = "tel://1-408-555-5555&quo ...