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算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...
随机推荐
- 自定义ShareDialog视图
1. share_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayou ...
- java 访问器方法中对象引用的问题
"注意不要编写返回引用可变对象的访问器方法".因为会破坏类的封装性,引用的内容可能会被改变,产生业务逻辑上的错误. 什么是可变对象? 先要搞清楚java中值传递和引用传递的问题,总结如下: 1.对象就 ...
- function 中定义函数的默认返回值,
result有默认值的int类型的为0,string类型的为‘’,tobject类型的为nil等等
- echo二次开发 ecshop 函数列表
lib_time.php (时间函数) gmtime() P: 获得当前格林威治时间的时间戳 /$0 server_timezone() P: 获得服务器的时区 /$0 local_mktime($h ...
- redis学习笔记之pipeline
redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常 会阻塞并等待redi ...
- ISAPI在IIS7上的配置
主要介绍ISAPI的作用.ISAPI在IIS7上的配置.开发ISAPI的基本内容及使用VS 2008配置ISAPI DLL开发项目. 一.ISAPI介绍 缩写词=Internet Server App ...
- UIBezierPath 贝塞尔曲线
1. UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(30, 30, 100, 100) corner ...
- 软件测试技术(二)——使用等价类划分的方法进行的UI测试
测试的目标程序 程序代码 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; impo ...
- DataSet DataTable操作
DataSet ds = new DataSet(); DataTable dt = new DataTable("OrderList"); ...
- 写给Python初学者的设计模式入门
有没有想过设计模式到底是什么?通过本文可以看到设计模式为什么这么重要,通过几个Python的示例展示为什么需要设计模式,以及如何使用. 设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的 ...