python爬虫基本原理及数据处理

爬虫基本原理

  1. 爬取流程
    (1)发起请求: 通过HTTP库向目标发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。
    (2)获取响应内容: 如果服务能正常响应,会得到一个Response,Response的内容就是要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
    (3)解析内容: 得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。如果是Json,可以直接转换为Json对象解析,如果为二进制数据,可以保存或进一步处理。
    (4)保存数据: 保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定的格式文件。

  2. Request
    (1) 请求方式: 主要由GET、POST请求,另外还有HEAD、PUB、DELETE、OPTIONS等。
    (2) 请求头: 包含请求头部信息,如User-Agent、Host、Cookies等信息。
    (3) 请求URL: URL全称统一资源定位,如一个网页文档、一张图片、一个视频都可以用URL来唯一确定。
    (4) 请求体: 请求时额外携带的数据,如表单提交的表单数据

  3. Response
    (1) 响应状态: 200/301/302/304/400/403/404/500/501状态等
    (2) 响应头: 内容长度、服务长度、服务器信息、折纸cookie等
    (3) 响应体: 最主要的部分,包含请求的资源内容,如HTML、图片、二进制数据等

    	import requests
    	
    	headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWeb Kit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"}
    	
    	response = requests.get("http://leadingme.top",headers=headers)
    	
    	print(response.status_code)
    	print(response.headers)
    	print(response.content) # 直接打印返回的结果 'UTF-8'
    	print(response.text)   # 打印转码后的文本内容
    
    

爬虫抓取数据

  1. 网页文本: 如HTML文档、Json格式的文本
  2. 图片: 获取的是二进制文件、保存为图片格式
    	将二进制数据图片写入文件中
    	import requests
    	
    	response = requests.get('https://dss2.bdstatic.com/kfoZeXSm1A5BphGlnYG/icon/weather/aladdin/png_18/a18.png')
    	
    	with open("F:/programNote/python爬虫2/03.png","wb") as f:
    	       f.write(response.content)
    	       f.close()
    	
    	file = open("F:/programNote/python爬虫2/03.png","rb")
    	f = file.read()
    	print(f)
    
  3. 视频: 同为二进制文件,保存为视平格式即可

解析方式

  1. 直接处理
  2. Json解析(转化为Json对象)
  3. 正则表达式
  4. BeautifulSoup解析库
  5. PyQuery
  6. Xpath

解决JavaScript渲染问题

  1. 分析Ajax请求(最开始的html文档是没有将所有数据加载出来的,通过后台接口用Ajax请求到数据)
  2. Selenium/WebDriver

保存数据

  1. 文本: 纯文本、Json、Xml等
  2. 关系型数据库: 如Mysql、Orche、SQL server等具有结构化表结构形式得存储
  3. 非关系型数据库: 如MongoDB、Redis等Key-Value形式存储
  4. 二进制文件: 如图片、视频、音频等直接保存成特定格式即可
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值