07、爬虫基本原理
chrome 检查元素 Elements 网页源代码
基本流程
1、发起请求,通过HTTP库想目标站点发起请求,即发送一个request。
2、获取响应内容,如果服务器能正常响应,会得到一个response,response的内容便是所有获取的页面内容,类型可能有html,json字符串,二进制数据(图片、视频等)等类型
3、解析内容,得到的内容可能是html,可以ongoing正则表达式,网页解析库进行解析,可能是json,可以直接转为json对象解析,可能是二进制数据,可以做保存或者进一步处理。
4、保存数据,保存形式多样,保存文本,数据库,或者特定格式。
什么是request和response
request 向目标服务器发送请求 ---请求
response 目标服务器反馈响应 ---响应
preview 网页源代码
request中 包含什么
1、请求方式
主要有GET、POST 两种类型
Request Method: GET/POST
2、请求URL (统一资源定位服务)
指定网页资源类型
3、请求头
包含请求是的头部信息 包含user-agent 识别浏览器返回页面信息
request headers(可以当做请求的配置信息)
4、请求体
请求时额外携带数据
form data 键值对的形式
response中包含什么
响应状态:
import requests response = requests.get('http://www.baidu.com') #请求发送 拿到响应 print(response.text) #text 拿回响应源代码 print(response.headers)#打印响应头 print(response.status_code) #判断状态码
怎样爬取数据
1、网页文本,如html、json格式文本。
2、图片,获取的是二进制文件。
wb 模式 这种打开方式为:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
import requests response = requests.get('图片超谅解') #请求发送 拿到响应 print(response.content) #打印的是二进制格式 #调用文件写入 with open('/var/tem/1.gif','wb') as f: #/var..路径 f.write(response.content) f.close() #此时 爬的图片就保存在了路径中
3、视频,同为二进制文件,保存为视频格式即可
4、其他
怎样进行网页解析
解析方式:
1、直接处理,网页构造简单,返回内容简单。可直接处理。
2、json格式。
3、正则表达式。
4、BeautifulSoup
5、PyQuery
6、XPath
怎样解决JS渲染问题
1、分析Ajax请求 返回json的字符串
2、Selenium/WebDriver 模拟浏览器加载
>>> from selenium import webdriver >>> driver = webdriver.Chrome() >>> driver.get('http://m.weibo.com')
3、Splash github
4、PyV8等等
怎样保存数据
1、文本
2、关系型数据库MySql\Oracle\SqlServer等有结构化表结构形式存储
3、非关系型数据库,如MongoDB\Redis等key-value形式存储
4、二进制文件,如图片视频音频等。