随笔缘由: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)