学了几天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爬虫学习的更多相关文章

  1. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  2. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  3. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  4. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

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

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

  6. python3.4学习笔记(七) 学习网站博客推荐

    python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...

  7. python3爬虫(4)各种网站视频下载方法

    python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...

  8. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  9. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

随机推荐

  1. 【Java】Java处理double相加的结果异常

    方式一(四舍五入):保留两位小数 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, ...

  2. table中嵌套table,如何用jquery来控制奇偶行颜色

    总是要趁着自己还有记忆的时候,把该记录下来的都记录下来,着实是不敢恭维自己的记性. 相信很多时候,我们前端人员,经常会用到table里面的某个td中还嵌套着table,而这个时候还总要去弄奇偶行的颜色 ...

  3. [Papers]NSE, $\p_3u$, Lebesgue space [Penel-Pokorny, AM, 2004]

    $$\bex \p_3\bbu\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=\frac{3}{2},\quad 2\leq q\leq ...

  4. POJ 2728 Desert King 01分数规划,最优比率生成树

    一个完全图,每两个点之间的cost是海拔差距的绝对值,长度是平面欧式距离, 让你找到一棵生成树,使得树边的的cost的和/距离的和,比例最小 然后就是最优比例生成树,也就是01规划裸题 看这一发:ht ...

  5. duilib底层机制剖析:窗体类与窗体句柄的关联

    转载请说明原出处,谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术.这些技术都是为了解决c++封装的窗体类与窗体句柄的关联问题. 这里是三篇关于thunk技术 ...

  6. ARM指令集----寻址方式

    ARM指令集可以分为跳转指令,数据处理指令,程序状态寄存器传输指令,LOAD/Store指令,协处理器指令和异常中断产生指令6类 ARM指令集的寻址方式 数据处理指令的操作数的寻址方式 字以及无符号字 ...

  7. 为什么你写的Python运行的那么慢呢?

    大约在一年前,也就是2013年在Waza(地名),Alex Gaynor提到了一个很好的话题:为什么用Python.Ruby和Javascript写的程序总是运行的很慢呢?正如他强调的,关键就是现在出 ...

  8. Ubuntu_wifi&pppoe

    学校现在上网全部要拨号,加上我在宿舍用的是无线路由,也就是要在ubuntu下实现连接wifi后再拨号,这个功能在默认的ubuntu网络设置里面是没有的,里面有dsl但是对有线网络使用的,有点小郁闷.不 ...

  9. Windwos Server 2008: 当网卡有多个IP地址时,如何指定缺省地址?

    这实际是一个当应用向外发起连接时,协议栈对源IP地址的选择问题.如果你的应用没有显式绑定一个本地地址,协议栈会选择一个"最佳"的本地地址来使用. 从 Vista 之后这个选择策略发 ...

  10. MATLAB / Simulink on BeagleBone Black

    转自:beagleboard@googlegroups.com邮件组 作者:kevind I have MATLAB / Simulink working with BeagleBone Black. ...