安装python后 自带urllib库

模块篇 分为几个模块如下:

1. urllib.request 请求模块

2. urllib.parse 分析模块

3. urllib.error 异常处理模块

4. urllib.robotparser robots文本协议识别 用的比较少

方法篇 分为以下几种方法:

urlopen()

示例:

import urllib.request

response = urllib.request.urlopen("https://www.python.org")

print(response.read().decode('utf-8'))

type()方法  read()方法  status 方法  getheaders() getheader('Server')

示例

import urllib.request

response = urllib.request.urlopen("https://www.python.org")

print(type(response))
print(response.read())
print(response.status)
print(response.getheaders())
print(response.getheader('Server'))

参数篇 url data timeout

url 请求的URL地址

data 内容

示例

import urllib.parse
import urllib.request data = bytes(urllib.parse.urlencode({'name':'hello','pass':'123'}),encoding='utf-8')
response = urllib.request.urlopen('http://www.iqianyue.com/mypost',data=data)
print(response.read())

timeout 请求超时

示例

import urllib.request

response = urllib.request.urlopen('httpbin.org/get',timeout=1)
print(respons.read()) import socket
import urllib.request
import urllib.error try:
response = urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)
except urllib.error.URLError as e:
if isinstance(e.reason,socket.timeout):
print('TIME OUT')

requests urllib自带的请求模块

示例

import urllib.request

request = urllib.request.Request("http://www.baidu.com")

response = urllib.request.urlopen(request)

print(response.read().decode('utf-8'))

add_header

quote() 将内容转化为URL编码

unquote() 解码

爬虫爬取百度贴吧实例

import urllib
import urllib.request
import urllib.parse #百度贴吧爬虫接口 组合url地址 起始页和终止页
def tiebaSpider(url,beginPage,endPage):
"""
作用:负责处理 url 分配每一个url去发送请求
:param url: 处理第一个url
:param beginPage: 爬虫起始页
:param endPage: 爬虫终止页
:return: null
"""
for Page in range(beginPage,endPage+1):
pn = (Page-1)*50
filename = "第" + str(Page) + "页.html"
#组合url 发送请求
fullurl = url + "&pn=" + str(pn)
# print fullurl
# 调用loadPage()函数发送请求获取HTML页面
html = loadPage(fullurl,filename)
# 调用writePage()函数 将服务器响应文件保存到本地磁盘
writeFile(html,filename) def loadPage(url,filename):
"""
作用:根据url发送请求 获取服务器响应数据
:param url: 请求地址
:param filename: 文件名
:return:服务器响应文件
"""
print("正在下载" + filename)
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
request = urllib.request.Request(url,headers = headers)
response = urllib.request.urlopen(request)
return response.read() def writeFile(html,filename):
"""
作用:保存服务器文件到本地磁盘
:param html: 服务器文件
:param filename:本地磁盘文件名
:return:null
"""
print("正在存储" + filename)
with open(filename,"wb+") as f:
f.write(html)
print("-"*20) #模拟main 函数
if __name__ == "__main__":
kw = input("请输入要爬取的贴吧名")
#输入起始页和终止页 str转化为int类型
beginPage = int(input("请输入爬取的起始页"))
endPage = int(input("请输入爬取的终止页"))
url = "http://tieba.baidu.com/f?"
key = urllib.parse.urlencode({"kw":kw})
#组合后的url示例 http://tieba.baidu.com/f?kw=lol
url = url + key
tiebaSpider(url,beginPage,endPage)

作业:

page 页码 不出现负数

去贴吧帖子下级目录 里面获取信息

# str为字符串
# str.isalnum() 所有字符都是数字或者字母
# str.isalpha() 所有字符都是字母
# str.isdigit() 所有字符都是数字
# str.islower() 所有字符都是小写
# str.isupper() 所有字符都是大写
# str.istitle() 所有单词都是首字母大写,像标题
# str.isspace() 所有字符都是空白字符、\t、\n、\r

beginPage = input('请输入开始页(整数): ')
while True:
if beginPage.isdigit():
if int(beginPage) <= 0:
beginPage = 1
break
else:
beginPage = int(beginPage)
break
else:
beginPage = input('请重新输入开始页(整数):')

Python3编写网络爬虫01-基本请求库urllib的使用的更多相关文章

  1. Python3编写网络爬虫02-基本请求库requests的使用

    一.requests 库使用 需要安装 pip install requests import requests #导入requests库 request = requests.get("h ...

  2. Python3编写网络爬虫07-基本解析库pyquery的使用

    三.pyquery 简介:同样是一个强大的网页解析工具 它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便 安装: pip install pyquery 验证: im ...

  3. Python3编写网络爬虫06-基本解析库Beautiful Soup的使用

    二.Beautiful Soup 简介 就是python的一个HTML或XML的解析库 可以用它来很方便的从网页中提取数据 0.1 提供一些简单的 python式的函数来处理导航,搜索,修改分析树等功 ...

  4. Python3编写网络爬虫05-基本解析库XPath的使用

    一.XPath 全称 XML Path Language 是一门在XML文档中 查找信息的语言 最初是用来搜寻XML文档的 但是它同样适用于HTML文档的搜索 XPath 的选择功能十分强大,它提供了 ...

  5. python3编写网络爬虫20-pyspider框架的使用

    二.pyspider框架的使用 简介 pyspider是由国人binux 编写的强大的网络爬虫系统 github地址 : https://github.com/binux/pyspider 官方文档 ...

  6. python3编写网络爬虫18-代理池的维护

    一.代理池的维护 上面我们利用代理可以解决目标网站封IP的问题 在网上有大量公开的免费代理 或者我们也可以购买付费的代理IP但是无论是免费的还是付费的,都不能保证都是可用的 因为可能此IP被其他人使用 ...

  7. python3编写网络爬虫17-验证码识别

    一.验证码识别 1.图形验证码的识别 识别图形验证码需要 tesserocr 库 OCR技术识别(光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程.)例如 中国知网注册页面 ht ...

  8. Python3编写网络爬虫04-爬取猫眼电影排行实例

    利用requests库和正则表达式 抓取猫眼电影TOP100 (requests比urllib使用更方便,由于没有学习HTML系统解析库 选用re) 1.目标 抓取电影名称 时间 评分 图片等 url ...

  9. python3编写网络爬虫21-scrapy框架的使用

    一.scrapy框架的使用 前面我们讲了pyspider 它可以快速的完成爬虫的编写 不过pyspider也有一些缺点 例如可配置化不高 异常处理能力有限对于一些反爬虫程度非常强的网站 爬取显得力不从 ...

随机推荐

  1. Spark2.1.0——深入理解事件总线

    Spark2.1.0——深入理解事件总线 概览 Spark程序在运行的过程中,Driver端的很多功能都依赖于事件的传递和处理,而事件总线在这中间发挥着至关重要的纽带作用.事件总线通过异步线程,提高了 ...

  2. asp.net MVC 的处理流程

    之前把笔记都放在空间日志中隐藏起来,今天看到这句话:作为经常从网上索取免费资料的一员,要有回报的思想,也为了让更多的人少走些弯路,想想自己不能这么自私,所以把空间日志搬到博客园来.闲话不说,直接开始. ...

  3. 写个OAuth2.0的请求端来测试自己的OAuth2.0服务端(二)

    在上一篇文章中,我们介绍了怎么创建自己的服务器,现在我们开始写个client端,来测试. 我们创建一个MVC项目,叫TestOAuthClient 1. 代码开始 1)第一步,我们创建一个MainCo ...

  4. [转]Microsoft SQL SERVER 2008 R2 REPORT SERVICE 匿名登录

    本文转自:https://www.cnblogs.com/Zouzhe/p/5736070.html SQL SERVER 2008 R2 是微软目前最新的数据库版本,在之前的SQL SERVER 2 ...

  5. 关于ASPxComboBox通过ClientInstanceName,js获取不到控件的问题

    今天突然遇到一个很奇葩的问题 ASPxComboBox中设置了ClientInstanceName.但是通过cmbOrganization.GetValue()获取不到值. 报错cmbOrganiza ...

  6. [日常] Go语言圣经-Slice切片习题

    1.Slice(切片)代表变长的序列,序列中每个元素都有相同的类型,一个slice类型一般写作[]T,其中T代表slice中元素的类型:slice的语法和数组很像,只是没有固定长度而已,slice的底 ...

  7. JS中的倒计时

    一.注:一般倒计时的时间都是后台传来的然后渲染到页面,这里有2个简单的倒计时方式 //带天数的倒计时function countDown(times){ var timer=null; timer=s ...

  8. EF框架的code first

    需要添加EntityFramework的引用,在NuGet(在工具--库程序包管理--程序包管理控制台) 控制台输入Install-Package EntityFramework,目前版本是6.1.3 ...

  9. Code Signal_练习题_differentSymbolsNaive

    Given a string, find the number of different characters in it. Example For s = "cabca", th ...

  10. Stylus基本使用

    介绍 在学习一个 Vue.js 项目的过程中,注意到源码中样式的部分并没有用熟悉的 .css 样式文件,而是发现了代码长得和 CSS 相像的 .styl 文件.这个 .styl 以前没见过啊,你是谁? ...