初学python
来源:互联网 发布:淘宝年消费怎么查 编辑:程序博客网 时间:2024/06/04 19:08
简单爬虫架构:URL管理器,网页下载器,网页解析器。
一、URL管理器
主要实现方法:
二、网页下载器urllib
1、最简单
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
url: 需要打开的网址
data:Post提交的数据
timeout:设置网站的访问超时时间
import urllib.requestresponse = urllib.request.urlopen('http://www.baidu.com')html = response.read()print(html)
2、使用Requeest
urllib.request.Request(url, data=None, headers={}, method=None)
import urllib.requestreq = urllib.request.Request('http://www.baidu.com')response = urllib.request.urlopen(req)html = response.read()print(html)
需要加headers
import urllib.requestimport urllib.parseurl = r'http://www.lagou.com/jobs/positionAjax.json?'headers = { 'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3', 'Referer': r'http://www.lagou.com/zhaopin/Python/?labelWords=label', 'Connection': 'keep-alive' }req = urllib.request.Request(url, headers=headers)page = urllib.request.urlopen(req).read()page = page.decode('utf-8')print(page)
用来包装头部的数据:
User-Agent :这个头部可以携带如下几条信息:浏览器名和版本号、操作系统名和版本号、默认语言
Referer:可以用来防止盗链,有一些网站图片显示来源http://*.com,就是检查Referer来鉴定的
Connection:表示连接状态,记录Session的状态。
需要POST数据
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
经过urlencode()转换后的data数据为?first=true?pn=1?kd=Python,最后提交的url为
http://www.lagou.com/jobs/positionAjax.json?first=true?pn=1?kd=Python
import urllib.requestimport urllib.parseurl = r'http://www.lagou.com/jobs/positionAjax.json?'headers = { 'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3', 'Referer': r'http://www.lagou.com/zhaopin/Python/?labelWords=label', 'Connection': 'keep-alive' }data = { 'first': 'true', 'pn': 1, 'kd': 'Python' }data = urllib.parse.urlencode(data).encode('utf-8')req = urllib.request.Request(url, headers=headers, data=data)page = urllib.request.urlopen(req).read()page = page.decode('utf-8')print(page)
使用代理
proxy = urllib.request.ProxyHandler({'http':'5.22.195.215:80'})opener = urllib.request.build_opener(proxy) #加载openerurllib.request.install_opener(opener) #安装openerdata = urllib.parse.urlencode(data).encode('utf-8')page = opener.open(url,data).read()print(page)
使用cookie
import urllib.requestimport urllib.parseimport http.cookiejarurl = r'http://www.baidu.com'cookie = http.cookiejar.CookieJar()#声明一个CookieJar对象实例来保存cookiehandler = urllib.request.HTTPCookieProcessor(cookie)#利用urllib库的HTTPCookieProcessor对象来创建cookie处理器opener = urllib.request.build_opener(handler)#加载openerurllib.request.install_opener(opener)#安装openerresponse = opener.open(url)#用带有cookie的urllib访问网页page = response.read()print(page)
三、网页解析器
主要是从网页中获取有价值的数据(有效数据和URL)。
最主要用到BeautifulSoup4
Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。
具体使用方法http://cuiqingcai.com/1319.html
- 初学python
- 初学python
- 初学Python
- 初学python
- 初学python
- 初学Python
- python初学
- 初学python
- 初学python
- python初学
- 初学python
- 初学Python
- python初学
- python初学
- 初学python
- python 初学
- Python初学
- 初学Python
- [DL]1.开始学习TensorFlow
- 对象包容
- 76个值得你注意的erlang编程习惯【转】
- 海选女主角 杭电2022
- 链表插入排序
- 初学python
- 在Java中如何使用transient
- 蓝桥杯-01字串(java)
- 深入理解ajax系列之一-XHR对象
- 穆罕默德的名言
- java多线程学习4,守护线程
- Python学习笔记 模块介绍
- CSDN一直都很不错,加油了6
- 网卡驱动之虚拟网卡驱动编写