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

1. 简单说明爬虫原理

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

2. 理解爬虫开发过程

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

 Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后, 进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。 

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

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

3).了解网页

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

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

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

select(选择器)定位数据

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

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

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

soups = BeautifulSoup(html.text,'html.parser')
soups.a  # a标签节点 
soups.select('a') # a标签节点 
soups.select('#id') # id=title节点
soups.select('.class') # class=class节点

 

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

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

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

import requests
from bs4 import BeautifulSoup

from datetime import datetime
from datetime import datetime

url = 'http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'
html = requests.get(url)
html.encoding = 'utf-8'
soup = BeautifulSoup(html.text,'html.parser')
Bt = soup.select('.show-title')[0].text
FbSj = soup.select('.show-info')[0].text.split()[0:2]
FbSj = ' '.join(FbSj)[5:]
FbSj = datetime.strptime(FbSj,'%Y-%m-%d %H:%M:%S')
FbDw = str(soup.select('.show-info')[0].text.split()[4])
Zz = str(soup.select('.show-info')[0].text.split()[2])
DjCsUrl="http://oa.gzcc.cn/api.php?op=count&id=11052&modelid=80"
djcs=int(requests.get(DjCsUrl).text.split('.html')[-1][2:-3])
DjCs = '点击次数:{}'.format(djcs)
Nr = soup.select('#content')[0].text.split()

print(Bt)
print('发布时间:{}'.format(FbSj))
print(FbDw)
print(Zz)
print(DjCs)
print(Nr[0]+'\n'+Nr[2]+'\n'+Nr[4]+'\n'+Nr[6])

 

posted on 2019-03-30 20:15  KevinShem  阅读(127)  评论(0编辑  收藏  举报