Python3爬虫学习
学了几天python3,发现目前学到的与爬虫还是关系不大,所以现在准备爬虫和语言同步学习。
2016.8.9晚
先从最简单的开始,爬取指定url的所有内容:
#encoding:UTF-8
import urllib.request url = "http://www.selflink.cn/selflink"
data = urllib.request.urlopen(url).read()
data = data.decode('UTF-8')
print(data)
#encoding:UTF-8
import urllib.request url = "http://www.cma.gov.cn/"
data = urllib.request.urlopen(url).read()
data = data.decode('gbk')
print(data)
编码不同,一个是utf-8,一个是gbk
另外,输出写入文件到的时候如果写入了一个html文件,打开可能会产生乱码,这个时候不要怀疑python的中文兼容性!(python中文兼容性超级好)其实可以用记事本打开一下爬取到的文件,编码是不是错了,可以另存为一下,重新设置一下编码(比如设置成utf-8),再把网页打开就发现不乱码了。比如这份代码:
import urllib.request
url = "http://www.douban.com/"
webPage=urllib.request.urlopen(url)
data = webPage.read()
data = data.decode('utf-8')
f = open("d:/1.html","w")
f.write(data)
print(type(webPage))
print(webPage.geturl())
print(webPage.info())
print(webPage.getcode())
因为python默认是以ASCII码存储文件的,所以在浏览器中爬取到的这个文件就显示了乱码。手动修改文件的编码就可以了。
当然,如果想自动设置文件编码,需要用到codecs库:
import urllib.request
import codecs url = "http://www.douban.com/"
webPage=urllib.request.urlopen(url)
data = webPage.read()
data = data.decode('utf-8')
f = codecs.open("d:/1.html","w","utf-8")
f.write(data)
print(type(webPage))
print(webPage.geturl())
print(webPage.info())
print(webPage.getcode())
或者指定文件编码:
#coding:utf8
import urllib.request
import urllib
import re s='你好 百度百科'
s=urllib.parse.quote(s)
url = "http://www.baidu.com/s?wd=%s"%(s)
webPage=urllib.request.urlopen(url)
data = webPage.read()
data = data.decode('utf-8')
k = re.split(r'\s+',data)
s = []
sr = []
sh=[]
for i in k :
if (re.match(r'href',i)):
if (not re.match(r'href="#"',i)):
s.append(i)
f = open("D:/Pythoncode/simplecodes/bd.html","w",encoding='utf-8')
for i in s:
if (re.match(r'href="http://www.baidu.com/link',i)):
sr.append(i)
for it in sr:
m = re.search(r'href="(.*?)"',it)
iturl = m.group(1)
sh.append(iturl)
iurl = sh[0]
webPage=urllib.request.urlopen(iurl) data = webPage.read()
data = data.decode('utf-8')
f.write(data)
f.close()
当然还有一种方法,就是直接以二进制的方式写入文件。
import urllib.request
url = "http://www.douban.com"
webPage=urllib.request.urlopen(url)
data = webPage.read()
#data = data.decode('UTF-8')
f = open("d:/1.html","wb")
f.write(data)
这种方法同样适用于爬取图片或者其他文件:
import urllib.request
url = "http://www.selflink.cn/huoying/naruto.jpg"
webPage=urllib.request.urlopen(url)
data = webPage.read()
#data = data.decode('UTF-8')
f = open("d:/naruto.jpg","wb")
f.write(data)
Python3爬虫学习的更多相关文章
- python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容
python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- python3爬虫(4)各种网站视频下载方法
python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...
- python爬虫学习(1) —— 从urllib说起
0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...
- python爬虫学习 —— 总目录
开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...
随机推荐
- h264检测是I帧还是P帧,解决录像第一帧有马赛克问题
最近使用h264码流数据进行录像,但是录出来的第一帧有马赛克,究其原因是录像的第一帧不是关键帧,所以需要录像是需要判断第一帧是否是关键帧,方法有两种,第一种是原码流的基础上查找,第二种是将原码流传递给 ...
- linux下打开chm文件的方法
windows中,通常情况下,chm文件可以使用系统自带的程序打开,但是linux就没有那么幸运了,那么,如何在linux下打开chm 文件呢?有小编来为您介绍介绍,本篇,小编以ubuntu环境为例 ...
- 连接Excel时出现未指定的错误
使用 strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended ...
- 我的web前端之路 分享些前端的好书(转)
WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才.本文主要介绍自己从事web开发以来 (从大二至今)看过的书籍和自己的成长过程,目的是给想了解Jav ...
- POJ 3977 Subset
Subset Time Limit: 30000MS Memory Limit: 65536K Total Submissions: 3161 Accepted: 564 Descriptio ...
- CXF之jaxws:endpoint对spring bean的引用
由于CXF对spring的无缝支持,CXF的使用,经常与spring捆绑在一起.随之而起的,自然是想在jaxws:endpoint中引用spring bean.在CXF提供的HelloWorld例子中 ...
- pycharm 源文件 编码格式
pycharm 4.5.3 版本 修改项目的编码 按如下操作:菜单 File-Settings-Editor-File Encodings 将IDE Encoding 和 Project Encodi ...
- [HIve - LanguageManual] LateralView
Lateral View Syntax Description Example Multiple Lateral Views Outer Lateral Views Lateral View Synt ...
- JavaEE5 Tutorial_Servlet
Web资源:web组件,静态web文件如图片 Web程序:可发布的Web资源集合 Web程序根目录下有个web-inf文件夹,如果只有jsp和静态资源,里面可以没有web.xml 根目录下可以直接 ...
- 配置Tomcat以指定的身份(非root)运行
本文依赖的环境: CentOS(大部分内容适用于其他Linux发行版) 已安装并配置好JVM环境 已安装并配置好gcc.make等编译工具 1. 下载Tomcat安装包并解压缩 cd /optwget ...