python爬虫学习笔记(1)
一、请求一个网页内容打印
爬取某个网页:
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)的更多相关文章
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
- Python爬虫学习笔记(三)
Cookies: 以抓取https://www.yaozh.com/为例 Test1(不使用cookies): 代码: import urllib.request # 1.添加URL url = &q ...
- python爬虫学习笔记
爬虫的分类 1.通用爬虫:通用爬虫是搜索引擎(Baidu.Google.Yahoo等)“抓取系统”的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 简单来讲就是尽可 ...
- Python、pip和scrapy的安装——Python爬虫学习笔记1
Python作为爬虫语言非常受欢迎,近期项目需要,很是学习了一番Python,在此记录学习过程:首先因为是初学,而且当时要求很快速的出demo,所以首先想到的是框架,一番查找选用了Python界大名鼎 ...
- 一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记!
前言 还记得是大学2年级的时候,偶然之间看到了学长在学习python:我就坐在旁边看他敲着代码,感觉很好奇.感觉很酷,从那之后,我就想和学长一样的厉害,就想让学长教我,请他吃了一周的饭,他答应了.从此 ...
- Python爬虫学习笔记——豆瓣登陆(一)
#-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import html5lib import re import ...
- Python爬虫学习笔记-1.Urllib库
urllib 是python内置的基本库,提供了一系列用于操作URL的功能,我们可以通过它来做一个简单的爬虫. 0X01 基本使用 简单的爬取一个页面: import urllib2 request ...
- 【Python爬虫学习笔记(3)】Beautiful Soup库相关知识点总结
1. Beautiful Soup简介 Beautiful Soup是将数据从HTML和XML文件中解析出来的一个python库,它能够提供一种符合习惯的方法去遍历搜索和修改解析树,这将大大减 ...
- 【Python爬虫学习笔记(1)】urllib2库相关知识点总结
1. urllib2的opener和handler概念 1.1 Openers: 当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例).正常情况下,我们使 ...
- Python爬虫学习笔记(一)
概念: 使用代码模拟用户,批量发送网络请求,批量获取数据. 分类: 通用爬虫: 通用爬虫是搜索引擎(Baidu.Google.Yahoo等)"抓取系统"的重要组成部分. 主要目的是 ...
随机推荐
- iptables:no config file
防火墙规则默认都是在/etc/sysconfig/iptables这个文件中的 出现这个问题,是因为在/etc/sysconfig/目录下没有找到iptables这个文件 可以使用service ip ...
- 有时间,可以研究哈redis的源代码
1 2 3 4 留位,以后自己用!
- 从0开始学CentOS7(2)---安装mariaDB、jdk1.8、redis
继续前面的基础步骤~ 这个是centos7自带的数据库MariaDB,以前是mysql,到7以后,改为MariaDB... 1. MariaDB安装,没有往深处配置...懒得动了..参考:http:/ ...
- Excel 移动列操作
- Gradle入门实战(Windows版)
Installation Gradle runs on all major operating systems and requires only a Java JDK or JRE version ...
- BIND简易教程(0):在Ubuntu下源码安装BIND(其实跟前面的教程没太大关系)
之前介绍过BIND的基本使用啦.关于BIND的入门级使用方法见:http://www.cnblogs.com/anpengapple/p/5877661.html简易教程系列,本篇只讲BIND安装. ...
- 针对Restful风格参数传递的请求获取真实url
昨天遇到这样一个问题,先简单介绍下. 业务场景 我们想要统计热点请求URL,进而进行分析优化 方案 通过过滤器获取到请求url(调用方法request.getservletpath),通过redis进 ...
- wampserver的安装与配置
一.安装:wamp的安装很简单,只需要按照提示并根据自己的需求操作即可,这里不再赘述. 二.配置:wamp安装完后,需进行如下配置才能正常工作. 1.修改MySQL的登录密码 (1)启动WampSer ...
- SpringBoot学习(三)IDEA
一.什么是JPA JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate.TopLink等. 二.Mysql数据库示例 1.在app ...
- ASP.NET Web API编程——异常捕获
1 向客户端发送错误消息 使用throw new HttpResponseException()向客户端抛出错误信息. HttpResponseException包含两个重载的构造函数,其中一个是构造 ...