爬虫 学习
1.介绍
网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
1.1.分类
根据使用场景分为,通用网络爬虫 和 聚焦网络爬虫 。
-
通用网络爬虫,又称全网爬虫,爬行对象从一些种子 URL 扩充到整个 web, 主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。
- 简单来说,通用网络爬虫就是将互联网上的网页下载到本地,形成一个镜像备份。
-
聚焦网络爬虫,又称主题网络爬虫,是指选择性爬取预先定义好的主题相关页面的网络爬虫。
- 简单来说,聚焦爬虫就是解决特点需求的一种网络爬虫程序,
1.2.合法性
遵循 Robots 协议
taobao.com/robots.txt
2.环境搭建
2.1.安装 Python
2.2.安装 PyCharm
2.3.安装 Python 轻量级虚拟环境 virtualenv
2.3.1.安装
# 安装 virtualenv
pip install virtualenv
# 安装 virtualenvwrapper (管理virtualenv)
pip install virtualenvwrapper-win
2.3.2.创建虚拟环境
# 创建虚拟环境
mkvirtualenv py_spider
# 查看当前包名及版本
pip list
# 查看当前已有的虚拟环境
workon
# 退出
deactivate
# 删除指定虚拟环境,确保要删除的环境没有在使用,如果有,要先退出
rmvirtualenv py_spider
# 查看当前已有的虚拟环境
workon
2.3.3.安装第三方框架
# 安装 jupyter
pip install jupyter
# 打开 jupyter notebook
jupyter notebook
# 安装 pandas
pip install pandas
2.3.4.pip换源
更换国内镜像源
-
清华大学 pypi.tuna.tsinghua.edu.cn/simple/
在当前用户目录下创建 pip 文件夹,然后在其中创建 pip.ini 文件,写入以下内容
[global] index-url = pypi.tuna.tsinghua.edu.cn/simple/ [install] trusted-host = pypi.tuna.tsinghua.edu.cn
3.爬虫常用基础库
3.1.安装 requests 和 bs4
# 查看已有的虚拟环境
workon
# 使用虚拟环境
workon base
# 安装 requests
pip install requests
# 安装 bs4
pip install bs4
# 查看是否安装成功
pip list
3.2.requests 库介绍
requests 是一个很实用的 Python HTTP 客户端。是在 urllib 的基础上完成的。
3.2.1.get 请求
# 1.普通 get 请求
import requests
response = requests.get('https://www.baidu.com')
response = requests.request('get', 'https://www.baidu.com')
print(response) # <Response [200]>
# 2.添加请求头 get 请求 import requests headers = { # 在网页使用 F12,查看请求头 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.33' } response = requests.get('www.baidu.com', headers=headers)
print(response) # 响应码
print(response.text) # 字符串形式的返回值
1.使用 fake_useragent
pip install fake_useragent
# 随机添加请求头 get 请求
from fake_useragent import UserAgent
print(str(UserAgent().random))
2.拼接 url
# 拼接 url
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.33'
}
params = {
'wd':'爬虫'
}
response = requests.get('https://www.baidu.com/s?', params=params, headers=headers)
print(response.content) # 查看相应内容,返回 bytes 类型
print(response.url) # 查看请求的完整 url
print(response.status_code) # 响应码
print(response.encoding) # 查看响应中的编码
3.2.2.下载图片
import requests
url = 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic2.zhimg.com%2Fv2-5f86334456600d18536473dd584e832d_1440w.jpg%3Fsource%3D172ae18b&refer=http%3A%2F%2Fpic2.zhimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1665907252&t=331ef9ec836d6b12e158cca60b229cd2'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.33'
}
response = requests.get(url=url, headers=headers)
with open('./风景.jpg', 'wb') as f:
f.write(response.content)