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中包含什么

响应状态:

 多种响应状态 200代表成功,301跳转,404找不到,502服务器错误。
 响应头:
如内容类型、内容长度、服务器信息、设置cookie等等。
响应体:
最主要的部分,包含了请求资源的内容。如网页html,图片二进制数据等。
 
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、二进制文件,如图片视频音频等。

 

转载于:https://www.cnblogs.com/liupingtao/p/9895131.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值