一、请求一个网页内容打印

  爬取某个网页:

 from urllib import request
# 需要爬取的网页
url = "https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9085796282359478067%22%7D&n_type=0&p_from=1"
# 打开网页,并返回
rsp = request.urlopen(url)
# 读取返回的结果
html = rsp.read()
# 由于rsp返回的是流文件需要解码
html = html.decode()
printf(html)

  爬取一个网页的基本流程:

    1、获取所需网页request.urlopen("网页链接")

    2、读取返回页面 rsp.read()

    3、解码:html.decode()

二、自动识别网页编码

 from urllib import request
import chardet
url = "https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9085796282359478067%22%7D&n_type=0&p_from=1"
res = request.urlopen(url)
html = res.read()
# 检查编码
cs = chardet.detect(html)
# 编码设置
html = html.decode(cs.get("encoding", "utf-8"))
print(html)

  第7行返回一个类似{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}的字典   encoding是编码格式,confidence是前面编码格式的概率。第九行进行解码设置,如果有匹配的编码按照获取的方式进行解码,否则按照“utf-8”的方式解码。

三、到百度页面爬取指定内容

 from urllib import request, parse
if __name__ =='__main__':
url = "http://www.baidu.com/s?"
# 输入关键词
wd = input("Input keyword:")
# 把关键字以字典保存
qs = {
"wd":wd
}
# 把关键字进行编码
qs = parse.urlencode(qs)
# 拼凑成完整的url
fullurl = url + qs
res = request.urlopen(fullurl)
html = res.read().decode()
print(html)

四、进行百度翻译:

  解析:

    1、打开F12

    2、尝试输入单词,发现每输入一个字母都有请求

    3、找到请求的地址:https://fanyi.baidu.com/sug

    4、在NetWork-All-Headers中查看,发现FormData的关键字是 kw:单词

    

  5、打开sug文件发现数据时json格式

  方式一:

 from urllib import request, parse
import json
baseurl = "https://fanyi.baidu.com/sug"
word = input("请输入单词: ")
data = {
"kw":word
}
# 对单词进行编码
data = parse.urlencode(data).encode()
# 构建请求头
rsp = request.urlopen(baseurl, data = data)
json_data = rsp.read().decode()
# 由于返回的是json数据,转换成字典
json_data = json.loads(json_data)
for item in json_data['data']:
print(item['k'], item['v'])

  翻译流程:

    1、利用data构造内容,然后用URLopen打开

    2、返回一个json格式

    3、转换成字典,输出

  方式二:

 from urllib import request, parse
import json
baseurl = "https://fanyi.baidu.com/sug"
word = input("请输入单词:")
data = {
"kw": word
}
data = parse.urlencode(data).encode('utf-8')
headers = {
'Content-Length':len(data)
}
req = request.Request(url = baseurl, data = data, headers = headers)
res = request.urlopen(req)
json_data = res.read().decode()
json_data = json.loads(json_data)
for item in json_data['data']:
print(item['k'], item['v])

五、urllib.error

  在某些时候爬取网站出现问题,可以通过 URLError和HTTPError查找问题

  1、URLError产生原因

    - 没网

    - 没有指定服务器

    - 服务器连接失败

 from urllib import request, error
if __name__ == '__main__':
url = "http://www.baidu.com"
try:
req = request.Request(url)
res = request.urlopen(req)
html = res.read().decode()
except error.URLError as e:
print("URLError: {0}".format(e.reason))
except Exception as e:
print(e)

  2、HTTPError

    HTTPError一般对应HTTP请求的返回码错误,如果返回的错误码是400以上引发HTTPError

    与URLError的关系:

      OSError  -> URLError  -> HTTPError

    代码:

 from urllib  import request, error
if __name__ == '__main__':
url = "http://www.baidu.com"
try
req = request.Request(url)
res = request.urlopen(req)
html = res.read().decode()
except error.HTTPError as e:
print ("URLError: {0}".format(e.reason))
print ("HTTPError: {0}".format(e))
except error.URLError as e:
print ("URLError: {0}".format(e.reason))
print ("HTTPError: {0}".format(e))
except Exception as e:
print(e)

 

python爬虫学习笔记(1)的更多相关文章

  1. python爬虫学习笔记(一)——环境配置(windows系统)

    在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库)   [推荐地址:清华镜像] https://mirrors ...

  2. Python爬虫学习笔记(三)

    Cookies: 以抓取https://www.yaozh.com/为例 Test1(不使用cookies): 代码: import urllib.request # 1.添加URL url = &q ...

  3. python爬虫学习笔记

    爬虫的分类 1.通用爬虫:通用爬虫是搜索引擎(Baidu.Google.Yahoo等)“抓取系统”的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 简单来讲就是尽可 ...

  4. Python、pip和scrapy的安装——Python爬虫学习笔记1

    Python作为爬虫语言非常受欢迎,近期项目需要,很是学习了一番Python,在此记录学习过程:首先因为是初学,而且当时要求很快速的出demo,所以首先想到的是框架,一番查找选用了Python界大名鼎 ...

  5. 一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记!

    前言 还记得是大学2年级的时候,偶然之间看到了学长在学习python:我就坐在旁边看他敲着代码,感觉很好奇.感觉很酷,从那之后,我就想和学长一样的厉害,就想让学长教我,请他吃了一周的饭,他答应了.从此 ...

  6. Python爬虫学习笔记——豆瓣登陆(一)

    #-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import html5lib import re import ...

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

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

  8. 【Python爬虫学习笔记(3)】Beautiful Soup库相关知识点总结

    1. Beautiful Soup简介     Beautiful Soup是将数据从HTML和XML文件中解析出来的一个python库,它能够提供一种符合习惯的方法去遍历搜索和修改解析树,这将大大减 ...

  9. 【Python爬虫学习笔记(1)】urllib2库相关知识点总结

    1. urllib2的opener和handler概念 1.1 Openers: 当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例).正常情况下,我们使 ...

  10. Python爬虫学习笔记(一)

    概念: 使用代码模拟用户,批量发送网络请求,批量获取数据. 分类: 通用爬虫: 通用爬虫是搜索引擎(Baidu.Google.Yahoo等)"抓取系统"的重要组成部分. 主要目的是 ...

随机推荐

  1. Goclipse的Eclipse插件包安装升级地址

    http://goclipse.github.io/releases/ Eclipse Software Site for Goclipse This URL is an Eclipse softwa ...

  2. Scrum团队开发

    Scrum学习心得 什么是scrum Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主 ...

  3. gitlab 创建ssh步骤

    1.使用gitlab首先要创建ssh的公钥和私钥.创建ssh的步骤和命令如下: 打开git bash,我的是windows,切换到.ssh文件夹下.如果没有则创建.ssh(默认是没有这个文件夹的).检 ...

  4. idea maven 依赖问题

    今天发现,原来idea引用maven依赖的时候,优先依赖的是本地.但是有个问题,如果我删除了一个packet,如果刚刚好本地另外一个项目里面也有这个对于的packet,idea的智能提示 是 将其导入 ...

  5. 【Leetcode】【Medium】Find Minimum in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  6. 全文检索及ElasticSearch框架学习

    1.   全文检索的通用步骤: 1.建库步骤: a 分词 b 倒排索引   :  关键词和记录Id的对应关系,1对多. 2.查询步骤: a 分词 b 查索引 c 取交集或并集 2.    产品使用全文 ...

  7. 使用websploit在局域网全自动渗透

    原理为 websploit调用dnsdpoof进行dns欺骗配合神器metasploit的web_autopwn模块进行渗透:特点:过程基本全自动. 终端输入websploit打开websploit: ...

  8. C/C++心得-结构体

    先说句题外话,个人认为,基本上所有的高级语言被设计出来的最终目的是降低软件开发难度,提升软件开发人员素质和团队协作能力,降低软件维护的难度.在学习语言的时候,可以从这么方面来推测各种语言语法设计的原因 ...

  9. 10、SpringBoot-CRUD登陆拦截

    1.前端页面的设置 index.html <input type="text" class="form-control" name="usern ...

  10. MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite

    MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储. ...