爬虫:
请求网站 并 提取数据 的 自动化程序
爬虫基本流程:
发起请求 -> 获取响应 -> 解析内容 -> 保存数据
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 二进制存储 图片 声音 视频