栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

爬虫笔记day01

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

爬虫笔记day01

抓取数据的目的:

1、获得大量数据,用来做数据分析 2、作为公司项目的测试数目 3公司业务所需数据

网络爬虫分类:

1、通用网络爬虫(搜索引擎使用,遵守robots协议)
robots协议:网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不可以抓取
查看网站robots协议方法:网站链接/robots.txt
2、聚焦网络爬虫:自己写的爬虫程序

爬取数据步骤:

1、确定需要爬取的URL地址
2、由请求模块向URL地址发出请求,并得到网站的响应
3、利用解析模块从响应内容中提取所需数据
(所需数据保存; 页面中有其他需要继续跟进的URL地址,则继续第二步)
4、如此循环

urllib.request原理及使用(请求模块)

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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号