TZ : 学习是不断进步的阶梯
一 : 爬虫简介
网络爬虫(又被称为网页[蜘蛛],网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫.
爬虫原理:
1.首先确定需要爬取的网页UR地址
2.通过HTTP/HTTPS协议来获取对应的HTML页面
3.提取页面有用的数据
爬虫的分类
-
通用爬虫 :
通常来说就是搜索引擎,尽可能把互联网上的网页下载下来,放到自己的本地服务器形成备份,再对这些网页做相关处理,提取关键字,去除广告,最后提供一个用户检索接口.
通用爬虫需要遵守Robots协议规则,协议中会指明爬虫可以爬取网页的权限,大型搜索引擎都会遵守.
-
聚焦爬虫 :
面向用户需求爬虫,会针对某种特定的内容爬去信息,而且保证信息和需求尽可能相关.
二 : 抓包工具
Charles其实是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。
https设置
1.安装SSL证书
2.证书设置成永久信任
3.添加网站
在add ->后分别设置 /
手机抓包在这里就不说了,很简单网上有很多,如果找不到,评论区留言,我会单独给你讲解.
三 : urllib基本操作
User-Agent 是爬虫和反爬虫重要的一个步骤,反爬虫可以通过这个属性来过虑掉一批爬虫访问,所以们要模拟这个属性
GET爬去普通网页
# Author:TianTianBaby
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
import urllib.request as myurllib
linkUrl = 'https://www.baidu.com/'
#构造headers
ua_headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
}
urlRequest = myurllib.Request(linkUrl,headers=ua_headers)
#向指定的url 地址发送请求,并返回服务器响应的类文件对象
response = myurllib.urlopen(urlRequest)
#服务器返回的类文件对象 支持 python 文件对象的操作方法
#read() 方法是读取返回文件全部内容,返回字符串
html = response.read()
#打印响应内容
print(html)
#返回请求的响应码 成功返回200 ,4开头表示 服务器页面问题 , 5 开头表示服务器本身问题
print(response.getcode())
##返回 数据实际的url, 防止重定向
print(response.geturl())
#返回服务器响应的HTTP报头
print(response.info())
POST爬去普通网页
ua_headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
}
url = "http://wz.kulehu.com/app/index.php?i=1&c=entry&do=search_school&m=ted_users"
dic = {
"school_name":"沈阳市"
}
data = parse.urlencode(dic).encode()
request = myurllib.Request(url,data=data,headers=ua_headers)
response = myurllib.urlopen(request)
myjosn = response.read()
print(myjosn)
四 : Cookie模拟登录
通过抓包工具,找到一个登录的网页的Cookie信息进行模拟登录,有不知道Cookie是个什么东西的小伙伴点这里-->点我了解,模拟登录就以为例子了.
我先登录一下,找出Cookie进行模拟登录.
# Author:TianTianBaby
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
import urllib.request as myurllib
url = "https://www.jianshu.com/users/077936bc1760/following"
headrs = {
"Host":"www.jianshu.com",
"Connection":"keep-alive",
"Accept":"text/html, */*; q=0.01",
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
"Referer":"https://www.jianshu.com/users/077936bc1760/following",
"Accept-Language":"zh-CN,zh;q=0.9",
"Cookie":"这是我的秘密要用你自己的哦",
}
request = myurllib.Request(url,headers=headrs)
response = myurllib.urlopen(request)
print(response.read().decode())