爬虫从0到1(一)

一.爬虫定义

1.爬虫

没有数据的公司,

爬取有数据的网站的数据,去做分析

咨询公司购买 (咨询公司数据,爬虫获取)

2.应用场景参考信息

----好的方向

(1).新浪微博 微指数

热词趋势

(2).百度新闻

链接外网.

不是自己生成新闻,百度收录(爬虫)

(3).呈现数据或使用链接

音乐软件

(4).数据分析

----坏的方向

(5).12306抢票

过去爬信息,现在有验证码,一样有方法爬

(6).网站上投票

程序投票,刷票

(7).短信轰炸

多网站,利用网站服务器对接的短信猫发送短信

3.爬虫定义

网络爬虫(网页蜘蛛,网络机器人),模拟可回答发送网络请求,接收请求响应,一种按照一定的规则,自动抓取网络信息的程序、

只要浏览器能做的事情,原则上,爬虫都能做。

二、爬虫的分类和robots

1.爬虫的分类

通用爬虫:搜索引擎爬虫(雅虎、百度、谷歌)

工作原理:爬取+分词处理

聚焦爬虫:

工作原理:特定Url+信息存储

2.怎么爬

(1).爬哪些网站url地址

(2).提取数据信息

(3).数据持久化

3.爬取后续

通用引擎:分词--检索

4.Robots协议(道德上协议)

网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

例如:https://www.taobao.com/robots.txt

https://www.jd.com/robots.txt

User-agent 浏览器身份标识 (用户代理)

三、Http和Https

http

超文本传输协议

默认端口:80

https

http+ssl(安全套接字层) 加密和解密

默认端口:443

https比http更安全,但是性能更低

四、请求说明

1.页面呈现有渲染过程

url的形式

形式 scheme://host[:port#]/path/../[?query-string][anthor]

scheme:协议(例如:http,https,ftp)

host:服务器的IP地址或者域名

port:服务器的端口(如果是走协议默认端口80或者443)

path:访问资源的路径

query-string:参数,发送http服务器的数据

anchor:锚(跳转到网页的指定锚点位置)

http://localthost:4000/file/part01/1.hecore.html

http://item.jd.com/11232138.html#product-detail

说明 #可用于前端路由的方式,此处用于定位。

Request Header

GET/HTTP/1.1

Connection: keep-alive 保持连接

Upgrade-Insecure-Requests:1 -->1 true 0 false

Cache-Control: max-age=0 -->0不缓存

User-Agent: 用户代理(百度不同显示-->PC/MAC/Iphone)

Accept:接收数据的类型

Accept-Encoding: gzip(图片压缩丢失信息)

Cookie-->客户端缓存。

Refere(页面跳转处)

x-requested-with:XMLHttpRequest(Ajax异步请求)

2.常见请求方法

GET|POST PUT|DELETE 名义上的请求

GET携带参数大小有限

3.响应状态码

200 30x 40x 50x

4.Response Headers

五、爬虫语言

    Java(核心多种方式),Python(核心借助requests库,后续有很多框架)    本次教程采用原生开发,框架开发后续补充。

六、Python爬虫基础铺垫

编译器选择PyCharm

1.str类型和bytes类

bytes:二进制

互联网上数据都是以二进制方式传输的

str: unicode的呈现方式。

中文3个字符。

2.str bytes转换(python习惯使用方法的方式去转换类型)

str使用encode转换未bytes

bytes通过decode转换为str

注意:编码和解码方式需要一致,否则乱码。

b'\xe4\xbc' bytes类型。

3.requests库使用

作用:发送网络请求,返回响应数据

中文文档API:http://docs.python-requests.org/zh_CN/latest/index.html

应该用场景:使用requests发送网络请求。

import requestsrequests.get("http://www.baidu.com")<Response [200]>r=requests.get("http://www.baidu.com")type(r)<class 'requests.models.Response'>

查看方法 输入 r. 按键盘tab

获取html代码方式

(1).利用r.text

r.text text为r的属性

查看解码方式

r.encoding 'ISO-8859-1' 根据响应的头部的推测

r.encoding = "utf-8" 指定编码方式

(2).利用r.content

r.content 获取的是bytes类型的(二进制数据)

r.content.decode() 转为str类型的

基本代码

import requests

response=requests.get("http://www.baidu,com")

response.encoding="utf-8" #指定response.text的编解码方式

print(response.text) #使用response,text来获取网页的html的字符串(str)

print(response.content.content.decode()) #response.content是一个byte类型的字符串。

f= open ("baidu.png","wb") #wb方式写入

f.write(r.content)

f.close

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值