数据采集的基本原理

爬虫基本原理

爬虫是 模拟用户在浏览器或者App应用上的操作,把操作的过程、实现自动化的程序

当我们在浏览器中输入一个url后回车,后台会发生什么?比如说你输入https://www.baidu.com

简单来说这段过程发生了以下四个步骤:

  • 查找域名对应的IP地址。
    浏览器首先访问的是DNS(Domain Name System,域名系统),dns的主要工作就是把域名转换成相应的IP地址
  • 向IP对应的服务器发送请求。
  • 服务器响应请求,发回网页内容。
  • 浏览器显示网页内容

 

网络爬虫要做的,简单来说,就是实现浏览器的功能。通过指定url,直接返回给用户所需要的数据, 而不需要一步步人工去操纵浏览器获取。

(1).浏览器是如何发送和接收这个数据呢?

HTTP协议(HyperText Transfer Protocol,超文本传输协议)目的是为了提供一种发布和接收HTML(HyperText Markup Language)页面的方法。

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

(2).爬虫基本思路

(1).通过URL或者文件获取网页,
(2).分析要爬取的目标内容所在的位置
(3).用元素选择器(re、BeautifulSoup、Xpath等)快速提取(Raw)目标内容
(4).处理提取出来的目标内容 (通常整理合成一个 Json)
(5).存储处理好的目标内容(比如放到 MongoDB、MySQL 之类的数据库,或者写进文件里.)

1.静态本地网页与json文件爬取演示

(1).html网页抓取

import urllib.request as re
from bs4 import BeautifulSoup
# 1.使用urllib的request模块,打开一个带有html页面的链接,此时获取的只是一个链接对象
response = re.urlopen("file:///D:/Project/Python/jyputerTest/Spider/Source/demo01.html")
# 2.从连接对象中将网页源代码字符串获取到,此时是没有经过格式化的
html = response.read()
# 3.通过 BeautifulSoup 对网页源代码字符串进行解析
soup = BeautifulSoup(html)
# 4.我们就可以从BeautifulSoup中直接使用标签名作为参数 去直接获取对应 标签 中的数据
soup.find('tr')
soup.find_all('tr')

(2).json数据读取 

 

import urllib.request as re
# 此时我们解析json使用的模版是json
import json

# 1.同样此时获取我们文件的连接
response = re.urlopen("file:///D:/Project/Python/jyputerTest/Spider/Source/demo02.json")
# 2.将连接中的数据读取为源字符串
jsonString = response.read()
# 3.加载数据为json,同时对读取到的json字符串做一个解码
jsonObject = json.loads(jsonString.decode())
# 4.对json中的数据进行值的获取(分不同的层级)
jsonObject['employees']  # 根路径
jsonObject['employees'][0] # 获取列表中的第一个元素
jsonObject['employees'][0]['firstName'] # 获取字典中指定的key对应的值(value)

 

2.爬虫实战:7日天气预报 爬取

本次实战主要是使用 request库 和 BeautifulSoup 库进行数据的爬取

(1).实战原理

1),Requests 简介

request库是一个非常好用的请求发送包,它可以自动封装底层python 的网络请求。

 

其中我们本次课程中是使用的:Requests.get()方法
Requests库的get()方法主要用于获取HTML网页,相当于HTTP的GET。其返回对象response的常用属性如下表所示,我们可通过这些属性获取要访问域名的基本信息。

2),BeautifulSoup 简介

BeautifulSoup库是用Python语言编写一个HTML/XML的解释器。它可以很好地处理不规范的标记并生成剖析树,其本身提供了简单又常用的导航、搜索以及修改剖析树的操作,利用它可以大大缩减编程时间。

简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐使用lxml 解析器。

 

3),网页信息查找与提取

我们使用Chrome浏览器,对于要爬取的网页,可以按F12进入调试模式,也可以选择相应信息右键"检查",亦可进入调试模式,而且直接到达该信息HTML位置,更为方便。

(2).实战代码

# 导入requests模块和bs4模块
import requests
from bs4 import BeautifulSoup

# 加入请求头,防止网站监测出来我们是爬虫,所以都必须要引入请求;对于有需要 登录 的页面需要加上cookices,那么直接在header字典中将 " 'Cookie': '你的cookie' "添加进去
header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
}
# 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值