爬虫入门基础

什么是爬虫

就是编写程序,模拟浏览器上网,让其去互联网中抓取数据的过程。

模拟:浏览器本身就是一个爬虫工具,爬虫相关模块都是基于浏览器为基础开发出来的。只要模拟力度够大,可以爬取任何数据(必须遵守robots协议)。

robots协议:

baidu.com/robots.txt 

Disallow后面说明带相关路径的不允许爬取 

抓取:获取页面全部数据和局部数据

爬虫分类

1.通用爬虫:获取页面中所有数据

2.聚焦爬虫:获取页面中局部数据,建立在通用爬虫基础上实现的

3.功能爬虫:通过浏览器或者应用自动化操作,实现相关网页或者应用自动化的操作(刷单)

4.增量式爬虫:检测网站数据更新情况,获取网站最新的数据

5.分布式爬虫:可以同时运行多个爬虫程序的爬虫

requests基本操作

基本介绍

requests就是爬虫中基于网络请求的模块

作用:模拟浏览器上网

环境安装

pip install requests

编码流程

1.指定url(网址)2.发起请求(按下回车)3.获取响应数据(获取网址爬取到的数据)4.持久化储存

先简单获取一个网站页面

import  requests
url='https://www.sogou.com/'#指定网址
#发起请求(只要在浏览器地址栏输入网址按下回车,发起的一定是get请求)
response =requests.get(url=url)#第二个url是指定参数(上面的网址),response是服务端返回给客户端的响应对象
page_text =response.text#text属性使用来返回字符串形式的响应数据
#print(page_text)
#持久化储存
with open('./sogou.html','w',encoding='utf-8')as fp:
    fp.write(page_text)
print('数据爬取储存成功')

简单网页采集器

注意:在浏览器地址栏中的网址,网址?后面的内容就是请求参数

query=c罗就是请求的参数(客户端发送给服务端的数据)

新增两个概念:反爬机制和反爬策略,意思顾名思义

要学会分析反爬机制:

        异常的访问请求:通过程序发起的请求

        正常的请求:通过浏览器发起的请求

网址如何检测是不是浏览器发起的请求

        是通过请求的一个头信息:user-agent(请求载体(浏览器,程序)的身份信息)

可以看见请求头里面有useragent ,里面包含了各种身份标识信息。

所以我们要伪装请求载体的身份标识(UA伪装)

import requests

#请求参数动态化
keyword = input('请输入关键字:')
#稍后想要把该字典作为请求参数
pram = {
    'query':keyword, #只存在一个键值对(存在一组请求参数)
}
#1.指定url
url = 'https://www.sogou.com/web' #需要将请求参数去除
#2.发起请求
head = { #存放需要伪装的头信息
    'User-Agent':'存放的useragent'
}
#通过headers参数进行了头信息的伪装
response = requests.get(url=url,params=pram,headers=head)

#3.获取响应数据
page_text = response.text

#4.持久化存储
fileName = keyword + '.html'
with open(fileName,'w',encoding='Utf-8') as fp:
    fp.write(page_text)
print('爬取成功')

 

 

 豆瓣电影榜单排名

对网站进行分析:

在抓包工具定位到和浏览器地址栏相同的数据包,查看开发者工具中的响应如何检测是否存在我们想要爬取的数据呢?局部搜索:将你想要爬取的局部数据,在响应进行搜索,查看是否可以搜索到。搜索到了,可以直接对该数据包的url发起请求获取你想要的数据即可搜索不到,说明是动态加载数据。
什么是动态加载数据?
特不是通过浏览器地址栏的请求请求到的数据,就是动态加载数据。同理,动态加载数据一定是通过其他的请求请求到的。
如何获取动态加载数据?
基于抓包工具进行全局搜索,点击任意的数据包,然后按下ctrl+f打开全局搜索框,搜索局部你想要的数据,即可定位到包含搜索数据的指定数据包。然后定位到请求方式和请求参数(可以在负载中查看)
 

 

import requests
head = { #存放需要伪装的头信息
                   
                }
pram = {
        存放的请求参数
        }
url = 'https://movie.douban.com/j/chart/top_list'
response = requests.get(url=url,headers=head,params=pram)
#获取响应数据
#json()可以将获取到的json格式的字符串进行反序列化
page_text = response.json()
fp = open('./douban.txt','w',encoding='Utf-8')
for dic in page_text:
    title = dic['title']
    score = dic['score']
    fp.write(title+':'+score+'\n')
    print(title,'爬虫保存成功!')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值