Python 爬虫基础学习

192 阅读2分钟

爬虫 学习

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换源

更换国内镜像源

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)