从0开始学python_Python爬虫从0开始学(1)

在简书写Python爬虫的文章超过30篇了(《Python爬虫文章专辑》),上周加了不少想学习Python爬虫的朋友,居然有两位简友说,是看我的文章学会Python的,还有一位朋友说,一晚上一直在看我写的Scrapy文章(有15篇文章)。

一直都有一些完合零基础的童鞋加我,想学习Python。我就想整理一个Python从0开始学的系列文章,有一段时间还想把这个专题取名为“适合女孩子学的Python教程”(Python Girls),就是要进一步降低学习的门槛,做到有趣,实用,能快速应用。

今天的文章其实不是完全从0开始,是适合了解一些编程语言,或者在大学学会C语言课程。Python语言的学习方法和环境搭建准备,我会另写一篇。

如果你使用的是Mac或Linux系统,是自带Python环境的。

今天先从一个小爬虫,一段小代码开始,实现批量下载图片的功能。把贴吧这个页面上的图片都下载下来。

http://tieba.baidu.com/p/3205263090

一、实现的流程

只有3步:

1)拿到网页的源码

2)匹配出网页中图片的url

3)把图片保存到本地(电脑中)

二、实现过程解析

1)我们可以通过在网页上点击右键,“查看页面源代码”,来看一个网页的背后是由这些代码组成的。

这太复杂了

是的,这太复杂了,我们也不必去读它。第一步,就是要在程序中拿到它。在Python中很简单,只要3行代码就可以实现:

import urllib

page = urllib.urlopen('http://tieba.baidu.com/p/3205263090')

html = page.read()

print html

在终端上运行一下,就是这样,拿到网页的源码:

第一行代码,是导入urllib模块,urllib是Python用于网络访问的基础模块。urlopen()方法就是打开一个url,返回一个文件对象,然后就可以进行类似文件对象的操作。

2)要找出文章中的图片地址进行正则表达式的匹配。这是刚开始学习的难点。

可以理解成,网页中每个图片的地址(url)不一样,要找出他们的规律。

在页面上的图片右键“查看元素”,找到这个图片对应的代码:

右键查看元素

红色框中对应的 scr= 后面的就是我们要得到的内容。

reg = r'src="([.*\S]*\.jpg)" pic_ext="jpeg"'

这行代码不太理解的话,先拷过来。可以理解成为这个就是能对得上上面红色框中src="xxxxoooo" pic_ext="jpeg"的模子。

这样看来,正则表达式是一个学习的重点。

3)注意我们找到的要下载的图片是多个,用循环迭代出来,一个个保存到我们的电脑就可以了

#生成一个我们所需要的Pattern(正则表达式)实例

imagereg = re.compile(reg)

#以列表形式返回全部能匹配的子串。

imgurls = re.findall(imagereg, html)

x = 1

for imgurl in imgurls:

urllib.urlretrieve(imgurl, '/Users/apple/Desktop/a/%s.jpg' % x)

x +=1

urlretrieve()方法上将url定位到的html文件下载到你本地的硬盘中。第一个参数是要下载的url,第二个参数是保存的路径+文件名。注意你写的时候要改成你电脑上的路径。

完整的代码:

#coding=utf-8

import re

import urllib

# 获取网页源代码的方法

def getHtml(url):

page = urllib.urlopen(url)

html = page.read()

return html

html = getHtml('http://tieba.baidu.com/p/3205263090')

reg = r'src="([.*\S]*\.jpg)" pic_ext="jpeg"'

#正则表达式的字符串形式,编译为Pattern实例

imagereg = re.compile(reg)

#搜索string,以列表形式返回全部能匹配的子串

imgurls = re.findall(imagereg, html)

x = 1

for imgurl in imgurls:

urllib.urlretrieve(imgurl, '/Users/apple/Desktop/a/%s.jpg' % x)

x +=1

看一下运行的结果。

总结一下:

Python对网络访问的模块封装得很好,代码少。

需要对网页了解一些,正则表达式在这里是关键,我们后面还有简单的方法。

学习一个东西从兴趣开始,先做个小东西出来,这样学起来比较快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值