爬虫学习笔记1

1.爬虫概念

什么是爬虫?
程序猿:写程序,然后去互联网上抓取数据的过程
互联网:网,有好多的a连接组成的, url(统一资源定位符)

通用爬虫、 聚焦爬虫

通用爬虫:百度、360、搜狐、谷歌…

原理:
(1) 抓取网页
(2) 采取数据
(3) 数据处理
(4) 提供检索服务

通用爬虫如何抓取新网址

  1. 主动提交
  2. 设置友情链接
  3. 百度会和DNS服务商合作,抓取新网址
  4. 百度竞标、根据pagerank值、访问量、点击量(SEO)
  5. robots.txt. 如果不想让百度爬取,可以编写robots.txt , 一个口头协议

聚焦爬虫:根据特定的需求,抓取指定的数据

思路:代替浏览器上网
网页的特点:1. 都有自己唯一的url;2. 都是html结构;3.使用的都是http,https协议
步骤:1。 给一个url;2.写程序,模拟浏览器访问url; 3,解析内容,提取数据。

2. http协议

参见博客 http://www.cnblogs.com/wqhwe/p/5407468.html
http://www.cnblogs.com/10158wsj/p/6762848.html

HTTP请求中的常用消息头

accept:浏览器通过这个头告诉服务器,它所支持的数据类型
Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
Host:浏览器通过这个头告诉服务器,想访问哪台主机
If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间
Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的 防盗链
Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接

3. urllib库

encode() 字符串—》字节
如果小括号里不写,默认是utf-8
decode() 字节—》字符串

urllib.request

urlopen(url)
urlretrieve(url, image_path)

import urllib.request
# encode () 字符串---》字节类型  不写默认是UTF-8
# decode ()  字节类型---》字符串  不写默认是UTF-8
url = 'http://www.baidu.com'
# 完整的URL  http://www.baidu.com/index.html?name=goudan&password=123#lala
response = urllib.request.urlopen(url)
# print(response.read())  # 读取相应内容,为字节类型
# print(response.geturl())  # 获取请求的url
# print(response.getheaders())  # 获取头部信息,列表里有元组
# print(response.getcode())  # 获取状态码
# print(response.readlines())  #按行读取,返回列表,都是字节类型
# with open('baidu.html', 'w', encoding='utf-8') as fp:
#     fp.write(response.read().decode())

with open('baidu1.html', 'wb') as fp:
    fp.write(response.read())

urllib.parse

quote url编码函数,将中文转换为%XXX
unquote url解码函数,将%XXX转换成指定字符
urlencode 给一个字典,将字典拼接为query_string, 并且实现了编码功能

get方式

import urllib.request
import urllib.parse

keyword = input('请输入想要搜索的内容:')
url = 'http://www.baidu.com/s?'

#参数写成一个字典
data={
    'ie':'utf-8',
    'wd':keyword,
}
query_string = urllib.parse.urlencode(data)
url +=query_string

#发送请求
response = urllib.request.urlopen(url)
filename = keyword + '.html'
with open(filename,'wb') as fp:
    fp.write(response.read())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值