Python爬虫学习笔记-1.Urllib库

简介:   urllib 是python内置的基本库,提供了一系列用于操作URL的功能,我们可以通过它来做一个简单的爬虫。 0X01 基本使用 简单的爬取一个页面: import urllib2 request = urllib2.

  urllib 是python内置的基本库,提供了一系列用于操作URL的功能,我们可以通过它来做一个简单的爬虫。

0X01 基本使用

简单的爬取一个页面:

import urllib2
request = urllib2.Request("http://www.cnblogs.com")
response = urllib2.urlopen(request)
print response.read()

  GET方式

import urllib
import urllib2
values ={"id":1}
data=urllib.urlencode(values)
url="http://192.168.125.129/config/sql.php"
geturl=url+"?"+data
request =urllib2.Request(url)
response =urllib2.urlopen(request)
print response.read()

 POST方式

import urllib
import urllib2
url="http://192.168.125.129/config/sql.php"
values ={"id":1}
data=urllib.urlencode(values)
request = urllib2.Request(url,data)
response=urllib2.urlopen(request)
print response.read()

 0X02 高级用法

1、设置Headers

  部分网站做了反爬虫策略,通过上面的程序,可能会获取不到内容,这时候我们可以模拟浏览器的工作,设置一些Headers 的属性。

import urllib
import urllib2
url="http://192.168.125.129/config/sql.php"
values ={"id":1}
data=urllib.urlencode(values)
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36'}
request=urllib2.Request(url,data,headers)
response =urllib2.urlopen(request)
print response.read()

常见的headers属性

User-Agent : 浏览器类型,有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
application/json : 在 JSON RPC 调用时使用
application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务

另外,对付防盗链,可以在headers中加入referer。

2、设置Timeout 

      urllib2.urlopen方法,如果第二个参数data为空那么要特别指定是timeout是多少,写明形参,如果data已经传入,则不必声明。

import urllib
import urllib2
url="http://192.168.125.129/config/sql.php"
response = urllib2.urlopen(url, timeout=10)


import urllib
import urllib2
url="http://192.168.125.129/config/sql.php"
values ={"id":1}
data=urllib.urlencode(values)
response = urllib2.urlopen(url, data,10)

 3、异常处理

  当程序异常时,需要用try-except语句来包围并捕获相应的异常,否则程序将终止。

import urllib
import urllib2
url="http://192.168.125.129/config/sql22.php"
values ={"id":1}
data=urllib.urlencode(values)
try:
    request = urllib2.Request(url,data)
    response=urllib2.urlopen(request)
    print response.read()
except urllib2.HTTPError, e:
    print e.code
    print e.reason
except urllib2.URLError, e:
    print e.reason

else:
    print "ok"

这边使用URLError、HTTPError捕获异常,HTTPError是URLError的子类。

  4、模拟登陆

  利用cookie实现模拟登录,使用cookielib模块,代码示例:

import urllib
import urllib2
import cookielib

filename = 'cookie.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
postdata = urllib.urlencode({
            'username':'admin',
            'password':'password'
        })
#登录的URL
loginUrl = 'http://site/login.php'
#模拟登录,并把cookie保存到变量
result = opener.open(loginUrl,postdata)
#保存cookie到cookie.txt中
cookie.save(ignore_discard=True, ignore_expires=True)
#利用cookie请求访问另一个网址,此网址是后台网址
comurl = 'http://site/index.php'
#请求访问后台网址
result = opener.open(comurl)
print result.read()

 

目录
相关文章
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
782 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
1058 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
1257 19
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
368 0

推荐镜像

更多