python爬虫思维

在这里插入图片描述
不积跬步无以至千里

爬虫作为python语言的一个就业方向存在必有其道理。 我们该怎么去理解爬虫呢? 说说我的浅显看法。

0- 什么是爬虫

1- 从目的出发。

你想要看看今年房价行情怎样, 你可能需要从安*客,58等官网去查看, 然后一个一个记录下来, 然后分析是现在入手买房好还是再等等。你手动的采集数据, 这是正常行为。 如果你使用一段脚本去实现这个行为, 那这个脚本就叫爬虫

2- 从功能出发、

爬虫你可以看成一个自动化工具, 它代替你浏览页面, 抓取你想要的数据, 存储到本地,以供自己分析。
总之, 你想要从网络上获取信息, 你编写了一个脚本, 这个脚本就可以称之为一个爬虫

1- 爬虫其实很简单

爬虫到底难不难? 其实写了这么多爬虫脚本, 回过头来看看, 爬虫真的很简单, 简单到1分钟入门爬虫。 同时他又很难, 难道但凡大一点的网站数据你就获取不到。 那我们接下来看看爬虫为什么说简单,而难点到底在哪里。

让我们来看看如何实现一个最简单的爬虫

import requests
res_html = requests.get(url="https://www.baidu.com")

f = open("res.html" , 'wb')
f.write(res_html)
f.close()

这段代码的意思是,我们使用requests的包对url发送了一个get请求拿到了响应。我们将响应存储下来。
如果你已经理解了这两行代码。 恭喜你, 你已经学会了爬虫。

所以爬虫其实只有两个步骤,请求数据和处理结果。

是不是觉得很简单。

2- 爬虫真的很难

看到这里, 你会觉得爬虫很简单, 之所以你会有这种错觉是因为你没有接触到真正的爬虫需求。

难点一: 反爬之你请求不到数据

现在我给你一个需求, 请帮忙抓取豆瓣电影榜单前100部电影等等。

import requests
res_html = requests.get(url="https://movie.douban.com/")

这个时候我们可能就会发现我们获取不到页面数据了, 这就是我们的难点之一 ------ 反爬。
我们需要修改为

import requests

url = "https://movie.douban.com/"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36"
}

res_html = requests.get(url=url, headers=headers)

这就是反爬中的基础, 请求头 user-agent 的反爬, 我们需要将requests请求伪装成chrome浏览器

除此之外你还得学习
ajax 请求获取数据链接,使用 post 请求获取数据链接 , 使用cookie传参获取数据链接, 验证码校验获取数据链接,js逆向获取数据链接, js混淆获取数据链接,  App逆向获取数据链接,Android逆向获取数据链接。

如果以上你都接触过, 那恭喜你可以向中级爬虫工程师迈进了。

难点二: 反爬之你响了个啥

大部分的反爬都是对请求数据的一个保护, 数据持有者不想让你大批量的获取到数据,所以他致力于辨别你是人为操作还是爬虫操作。而另一种思路, 我提供给你的响应你无法格式化。 最常见的是html解析变动。这时候就需要你的解析功底了。

除此之外你还得学习
re,  xpath,  jsonpath,  beatfulsoup, 字体加密破解等。
难点三: 大批量获取数据

我们用了一些手段破解了页面反爬, 也成功获取到了数据, 我们怎么做到大批量的抓取数据呢。 这个就得考虑脚本的稳定性和高效性呢。 这时候我们需要学习框架scrapy。

除此之外你还得学习
scrapy-redis, ip池, ua池, redis, mongdb, 布隆过滤器

反爬逻辑

上述我们从一个爬虫的角度看了数据抓取的应用与难点。那我们现在以反爬的角度看下爬虫具体难在哪里。

一个正常的网址, 肯定是需要有人正常访问的。而总有一些非人为的请求给我们的服务器造成压力。

此时, 我们就有了我们现在的需求。保证正常人的方位, 尽量去除非人为的访问。 那我们从哪里入手, 答案就在下图:

在这里插入图片描述

没错, 就是渲染。 所以 99.9% 的反爬都是在js的渲染中。 数据未被js渲染之前无法使用, 数据被js渲过后可以被正常人接收查看。

所以要想成为一个web端爬虫高手, javascript是我们绕不开的坎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值