Python爬虫:爬虫基本原理

爬虫:

请求网站 并 提取数据 的 自动化程序

爬虫基本流程:

发起请求 -> 获取响应 -> 解析内容 -> 保存数据

Request

请求方式 Request Method:get post
请求url Request URL
请求头 Request Headers
请求体 Form Data

Response

响应状态 Status code 200ok 301跳转 404找不到页面 502服务器错误
响应头 Response Headers 设置cookies
响应体 Response Body

抓取的数据格式

网页文本 html json
二进制文件 图片 视频

代码示例:

>>> import requests

# 下载网页文件
>>> response = requests.get("http://www.baidu.com")
>>> response.status_code
200
>>> len(response.text)
22240
>>> response.headers
{'Content-Type': 'text/html', 'Content-Encoding': 'gzip', 'Expires': 'Thu, 10 Dec 2026 23:21:37 GMT', 'Cache-Control': 'max-age=7776000', 'Content-Length': '8436', 'Connection': 'close'}

# 增加请求头
>>> headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
>>> response = requests.get("http://www.baidu.com", headers=headers)
>>> response.status_code
200

# 下载图片,二进制文件
>>> response = requests.get("https://www.baidu.com/img/superlogo_c4d7df0a003d3db9b65e9ef0fe6da1ec.png", headers=headers)
>>> response.status_code
200

>>> with open("baidu.jpg", "wb") as f:
...     f.write(response.content)
...     f.close()
... 
6958

解析方式

直接处理
json解析
正则表达式
BeautifulSoup
XPath
pyquery

解决JavaScript渲染

分析Ajax
selenium库
Splash
PyV8 Ghost.py

保存数据

纯文本 txt, json, xml
关系型数据库 mysql sqlite  oracle sqlserver
非关系型数据库 MongoDB Redis
二进制存储 图片 声音 视频

你可能感兴趣的:(python)