page contents

5分钟了解爬虫思路,这是我见过最简单的基础教学

如果学会了python的基本语法,我认为入门爬虫是很容易的。 1:什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。 从技术层面来说就是...

如果学会了python的基本语法,我认为入门爬虫是很容易的。

1:什么是爬虫

爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。

从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用。

非诚勿扰:正在学习python的小伙伴或者打算学习的,可以私信小编“01”领取资料!

2:入门爬虫的干货

2.1: 爬虫的基本思路

  • 通过URL或者文件获取网页,
  • 分析要爬取的目标内容所在的位置
  • 用元素选择器快速提取(Raw) 目标内容
  • 处理提取出来的目标内容 ( 通常整理合成一个 Json)
  • 存储处理好的目标内容 (比如放到 MongoDB 之类的数据库,或者写进文件里。)
Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学

robots协议:
网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是道德层面上的约束

爬虫的用途:

1、12306抢票

2、短信轰炸

3、网络投票

4、监控数据

5、下载图片、小说、视频、音乐等

Http和Https:

发送请求,获取响应的过程其实就是发送Http或者Https请求和响应的过程。

HTTP

超文本传输协议

默认端口号:80

HTTPS

HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议

默认端口号:443

作用:在传输过程中对数据进行加密,防止被窜改

区别:http因不需要加密,所以性能更高,但安全性差。https安全性高,但是占用服务器资源

但是Https是未来的主流,比如小程序、ios、android客户端的接口都需要Https接口支持

Http请求报文:

Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学

常见请求头:

Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学

Http状态码

Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学

常见的 HTTP 状态码:

200 - 请求成功

301 - 资源(网页等)被永久转移到其它 URL

404 - 请求的资源(网页等)不存在

500 - 内部服务器错误

Chrome浏览器请求分析

Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学

分析流程图:

Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学

以上都是爬虫的预备知识,掌握了之后就可以写代码去爬取我们想要爬的网站了。Python提供了许多网络请求的库,比如Requests、urllib等,这里只说一下requests库

Requests库

安装:pip(3) install requests

基本使用:

# 导入模块
import requests
# 定义请求地址
url = 'http://www.baidu.com'
# 发送 GET 请求获取响应
response = requests.get(url)
# 获取响应的 html 内容
html = response.text

response常用属性:

  • response.text 返回响应内容,响应内容为 str 类型
  • respones.content 返回响应内容,响应内容为 bytes 类型
  • response.status_code 返回响应状态码
  • response.request.headers 返回请求头
  • response.headers 返回响应头
  • response.cookies 返回响应的 RequestsCookieJar 对象
# 获取字节数据
content = response.content
# 转换成字符串类型
html = content.decode('utf-8')

自定义请求头

# 导入模块
import requests
# 定义请求地址
url = 'http://www.baidu.com'
# 定义自定义请求头
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
# 发送自定义请求头
response = requests.get(url,headers=headers)
# 获取响应的 html 内容
html = response.text

发送Get请求

# 导入模块
import requests
# 定义请求地址
url = 'http://www.baidu.com/s'
# 定义自定义请求头
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
# 定义 GET 请求参数
params = {
"kw":"hello"
}
# 使用 GET 请求参数发送请求
response = requests.get(url,headers=headers,params=params)
# 获取响应的 html 内容
html = response.text

发送POST请求

# 导入模块
import requests
# 定义请求地址
url = 'http://www.baidu.com'
# 定义自定义请求头
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
# 定义post请求参数
data = {
"kw":"hello"
}

# 使用 POST 请求参数发送请求
response = requests.post(url,headers=headers,data=data)
# 获取响应的 html 内容
html = response.text

使用代理

为什么使用代理:1、让服务器以为请求是从多个客户端发出的。2、防止暴露我们的真实地址

Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学

使用方法

# 导入模块
import requests
# 定义请求地址
url = 'http://www.baidu.com'
# 定义自定义请求头
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
# 定义 代理服务器
proxies = {
"http":"http://IP地址:端口号",
"https":"https://IP地址:端口号"
}
# 使用 POST 请求参数发送请求
response = requests.get(url,headers=headers,proxies=proxies)
# 获取响应的 html 内容
html = response.text

请求中携带cookie

作用:有些网站需要登录,这时候cookie就是记录了你的用户信息

方式:

  • 直接在自定义请求头中携带
  • 通过请求参数携带cookie
# 导入模块
import requests
# 定义请求地址
url = 'http://www.baidu.com'
# 定义自定义请求头
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
# 方式一:直接在请求头中携带Cookie内容
"Cookie": "Cookie值"
}
# 方式二:定义 cookies 值
cookies = {
"xx":"yy"
}
# 使用 POST 请求参数发送请求
response = requests.get(url,headers=headers,cookies=cookies)
# 获取响应的 html 内容
html = response.text

数据提取

作用:从爬虫获取的数据中提取出我们想要的数据
方式:

  • json模块提取
  • xpath提取
  • 正则提取
  • beautifulsoup

json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式

  • json.loads json字符串 转 Python数据类型
  • json.dumps Python数据类型 转 json字符串
  • json.load json文件 转 Python数据类型
  • json.dump Python数据类型 转 json文件
    ensure_ascii=False 实现让中文写入的时候保持为中文
    indent=空格数 通过空格的数量进行缩紧

xpath

XPath 全称: XML Path Language,是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。
安装:pip(3) install lxml

常用规则

Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学

正则

Python中通过正则表达对字符串进行匹配是,可以使用re模块

 # 导入re模块
import re

# 使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)

# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()

常见语法

Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学
Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学
Python爬虫入门,5分钟了解思路,这是我见过最简单的基础教学
  • 发表于 2020-02-21 15:14
  • 阅读 ( 567 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章