随笔缘由:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2881

 

1. 简单说明爬虫原理

 

 

(1)向服务器发起请求 (2)获取响应内容 (3)解析内容 (4)保存内容

2. 理解爬虫开发过程

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

  Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socket server)

  Response:服务器接收请求,分析用户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图片,js,css等)

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

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

import requests
url="http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0328/11086.html"
res=requests.get(url)
res.encoding='UTF-8'
print(res.text)

 

3).了解网页

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

<html>
<head>
<meta charset="utf-8">
<body>
<h1 id="title">标题</h1>
<p>点击一下</p>
<button type="button" id="button">按钮</button>
</body>
</head>
</html>

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

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

from bs4 import BeautifulSoup
soups = BeautifulSoup(html_sample,'html.parser')
a1 =soups.a
a = soups.select('a')
print(a)
h = soups.select('h1')
print(h)
t = soups.select('#title')
print(t)
l = soups.select('.myclass')
print(l)

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

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

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

select(选择器)定位数据

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

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

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

#得到标签<h1,a>的元素
t=soup.select('h1')
d=soup.select('a')
#得到指定类(time)元素
b=soup.select('.time')
#得到特定id的元素
c=soup.select('inputname')
print(t,b,c,d)

 

import requestsrequests
import bs4
from bs4 import BeautifulSoup
bs4#获取特定网站数据
url="http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'"
res=requests.get(url)
type(res)
res.encoding="utf-8"
soup1=BeautifulSoup(res.text,'html.parser')
#得到新闻标题
soup1.select('title')#得到新闻的发布时间和单位
soup1.select('.show-info')#遍历for news in soup1.select('li'):if len(news.select('.news-list-title'))>0:t=news.select('.news-list-title')[0].texta=news.select('a')[0]['href']d=news.select('.news-list-info')[0].textprint(t)