1、什么是爬虫?
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。所谓的网上,就是指各种门户网站,利用程序快捷的帮我们从网站上拿到我们想要的数据。
2、浏览器工作原理。
既然我们想要从网站上爬取数据,我们就需要知道浏览器的工作原理,才能知道如何爬取数据。当我们自己通过浏览器想要访问某个网页,从而去找我们想要的数据时:
浏览器在向服务器发起请求后,服务器返回给浏览器的是html页面,是“生的“,需要通过浏览器解析过后,才能变成我们用户能够读得懂的,多彩多样的网页页面。
当我们利用爬虫来获取数据时的过程:
由图可知我们的爬虫程序需要分为四个步骤:获取数据、解析数据、提取数据、存储数据
3、编写爬虫程序所用到的相关库以及方法
3.1 requests
库:通过get()方法向服务器发出请求并得到响应
# 引入requests库
import requests
# requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,
# 括号里的参数'URL'是你需要的数据所在的网址,然后服务器对请求
# 作出了响应。
# 我们把这个响应返回的结果赋值给变量res,返回结果是一个Response类下的对象
res = requests.get('URL')
# 如果URL是文本链接,则用Response.text
text_ = res.text
# 如果URL是二进制的链接:如图片、音频、视频等等,用res.content
jpg_ = res.content
save_to_file = open('文件名.xxx','w') # 文本用w权限、二进制用wb权限
save_to_file.write(text) # 或者write(jpg_)
save_to_file.close() # 打开了文件就要关闭
3.1.1 Response对象的相关属性
3.2 BeautifulSoup4
requests
库帮我们搞定了爬虫的获取数据,但是获取来的网页数据,不一定全是我们所需要的,除非你输入的是指定图片或者指定视频单独的链接,才能得到特定内容,但大部分是通过整个网页页面来爬取内容,是html格式的东西,提取很困难。所以我们解析和提取的部分就交给灵活又方便的网页解析库BeautifulSoup。
BeautifulSoup4它能帮助我们根据html格式中的标签、属性、id等等来特定的爬取指定内容:部分演示如下,具体内容见官方文档:BeautifulSoup官方文档
import requests
from bs4 import BeautifulSoup
# res是Response对象
res = requests.get('URL')
# 将以文本的形式付给str对象:html
html = res.text
# BS的用法是:BeautifulSoup( 需要解析的字符串内容,'解析器名')
soup = BeautifulSoup( html,'html.parser')
# 找到所有标签类名为books的标签,并赋给ResultSet类(实际上是一个存储Tag类型的列表)
items = soup.find_all(class_='books')
# 循环遍历,用每一个Tag对象来取自己体内的内容
for item in items:
kind = item.find('h2')
title = item.find(class_='title')
brief = item.find(class_='info')
# 文本内容就是Tag.text, 根据属性名提取就是Tag['属性名']
print(kind.text,'\n',title.text,'\n',title['href'],'\n',brief.text)