1、获得大量数据,用来做数据分析 2、作为公司项目的测试数目 3公司业务所需数据
网络爬虫分类:1、通用网络爬虫(搜索引擎使用,遵守robots协议)
robots协议:网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不可以抓取
查看网站robots协议方法:网站链接/robots.txt
2、聚焦网络爬虫:自己写的爬虫程序
1、确定需要爬取的URL地址
2、由请求模块向URL地址发出请求,并得到网站的响应
3、利用解析模块从响应内容中提取所需数据
(所需数据保存; 页面中有其他需要继续跟进的URL地址,则继续第二步)
4、如此循环
1、此模块为Python标准库模块
2、程序导入的方式:import urllib.request/from urllib import request
作用:向网站发请求,即我们平时在浏览器输入地址访问网站一样
方法:(这里采用第一种导入方式)
(1)urllib.request.urlopen():向网站发起请求并获取响应对象
参数:url:需要爬取的url地址
timeout:设置等待超时时间,指定时间内未响应抛出异常
#例子:向百度http://www.baidu.con/发起请求并获取百度响应内容 import urllib.request res=urllib.request.urlopen(url='http://www.baidu.com/')#获取结果为对象响应对象方法
1、read()返回字节符响应内容
2、read().decode()返回字符串响应内容
3、geturl()返回实际数据的URL地址
4、getcode()获取HTTP响应码(例如404)
html=res.read() print(html,"n") html=res.read().decode() print(html) html=res.geturl() print(html) html=res.getcode() print(html)访问头修饰
在访问网站时网站会先检测我们的请求头是否是人操作,所以我们需要包装我们的发送的请求头模拟人,越逼真越好
请求头测试网站:http://httpbin.org/get
向测试网站发请求,会返回我们的请求头
采用urllib.request.Request()方法
使用流程:创建请求对象,包装请求,重构User-Agent,使程序更像人类
常用参数:URL:请求的地址
headers:添加请求头,类型为字典headers={‘User-Agent’:‘xxx’}这里的请求头可以百度查找:常见User-Agent大全
#例子
import urllib.request
#构造请求对象
url='http://httpbin.org/get'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
req=urllib.request.Request(url=url,headers=headers)
#获取响应对象
res=urllib.request.urlopen(req)
#获取响应的内容
html=res.read().decode()
print(html)
urllib.parse(将中文关键字编码)
在网站的地址中我们看见的是中文,但是写入程序的是一段编码,所以我们需要对我们要搜索的关键字进行编码
例如:赵丽颖==>https://www.baidu.com/s?wd=赵丽颖
方式一:urlencode()传入的参数是一个字典,当参数大于一个时会自动加&连接
方式二:quote()传入的是一个字符串
#例子:
import urllib.request
import urllib.parse
# word=urllib.parse.urlencode({'wd':'赵丽颖'})
word=urllib.parse.quote('赵丽颖')
url='https://www.baidu.com/s?wd='+word
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
req=urllib.request.Request(url=url,headers=headers)
#获取响应对象
res=urllib.request.urlopen(req)
#获取响应的内容
html=res.read().decode()
print(html)
print(word)



