学了几天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. 让你的 Node.js 应用跑得更快的 10 个技巧(转)

    Node.js 受益于它的事件驱动和异步的特征,已经很快了.但是,在现代网络中只是快是不行的.如果你打算用 Node.js 开发你的下一个Web 应用的话,那么你就应该无所不用其极,让你的应用更快,异 ...

  2. [Everyday Mathematics]20150201

    设数列 $\sed{a_n}$ 单调递减趋于零, 证明 $\dps{\vsm{n}a_n}$ 收敛当且仅当 $\dps{\vsm{n}3^k a_{3^k}}$ 收敛.

  3. 白盒测试之gtest第一个demo

    认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示. 一.需要测试的C++代码: #include "myfunction.h" // ...

  4. Qt加载网页(加载浏览器插件)和制作托盘后台运行(南信大财务报账看号)

    程序模块要添加QNetWork和QWebKit模块: nuistfinancevideo.h文件: #ifndef NUISTFINANCEVIDEO_H #define NUISTFINANCEVI ...

  5. duilib combo控件,当鼠标滚动时下拉列表自动关闭的bug的修复

    转载请说明出处,谢谢~~ 群里有朋友提到了使用Combo控件时,当下拉列表出现,此时鼠标滚轮滚动,下拉列表就自动消失了.我看了一下源码,这个bug的修复很简单. CComboUI控件被单击时创建CCo ...

  6. GRID控件删除之前确认

    <asp:TemplateField HeaderText="删除新闻" ShowHeader="False"><ItemTemplate&g ...

  7. CSS框模型(框模型概述、内边距、边框、外边距、外边距合并)

    CSS 框模型概述 CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式. 元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景. ...

  8. java 复习002

    java东西太多了,我都有点小凌乱了,记得太没结构了 java内存回收机制:垃圾收集GC(Garbage Collection) 两种常用方法: 引用计数(早期使用) 简介:堆中对象每次被栈中引用指向 ...

  9. Windows Server 2003下ASP.NET无法识别IE11的解决方法【转】

    http://www.iefans.net/windows-server-2003-asp-net-ie11-shibie/ 由于IE11对User-Agent字符串进行了比较大的改动,所以导致很多通 ...

  10. elisp debug

    M-x  是运行command的意思. 若使用常规Emacs debugger(即不使用edebuger),先把要debug的函数加入到debug-on-entry:  M-x   debug-on- ...