python爬虫第一天

时间:2024-06-17 12:36:26

python爬虫第一天

太久没折腾爬虫 又要重头开始了....感谢虫师大牛的文章.

接下来的是我的随笔

0x01 获取整个页面

我要爬的是百度贴吧的图,当然也是跟着虫师大牛的思路.

代码如下:

 #coding=utf-8
 import urllib
 #urllib 模块读取web页面相当于接口

 def gethtml(url):    #定义一个gethtml函数得到页面
     page = urllib.urlopen(url)
     html = page.read()
     return html
 html = gethtml("http://tieba.baidu.com/p/4674704187")

 print html

按照我的标注大概思路是这样,接着是虫师大牛的讲解:Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据。首先,我们定义了一个getHtml()函数:

  urllib.urlopen()方法用于打开一个URL地址。

  read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。执行程序就会把整个网页打印输出。

0x02 抓取数据

python爬虫第一天

这里是我们想要的主题,代码如下:

 #coding=utf-8
 import urllib
 import re
 #urllib 模块读取web页面相当于接口,第二次正则表达试提图片

 def gethtml(url):    #定义一个gethtml函数得到页面
     page = urllib.urlopen(url)
     html = page.read()
     return html
 #在原来的基础上修改添加正则表达式的语句 src="http://imgsrc.baidu.com/forum/w%3D580/sign=ab2da672e124b899de3c79305e061d59/82777fec54e736d1ac3b007a93504fc2d5626915.jpg"
 def getimg(html):
     reg = r'scr="(.+?\.jpg)"pic_ext'
     imgre = re.compile (reg)
     imglist = re.findall (imgre,html) #牵扯到异步知识但还不算是,这里按顺序取得图片,我的理解.233
     return imglist

 html = gethtml("http://tieba.baidu.com/p/4674704187")
 print getimg(html)

  我们又创建了getImg()函数,用于在获取的整个页面中筛选需要的图片连接。re模块主要包含了正则表达式:

  re.compile() 可以把正则表达式编译成一个正则表达式对象.

  re.findall() 方法读取html 中包含 imgre(正则表达式)的数据。

   运行脚本将得到整个页面中包含图片的URL地址。

0x03 通过筛选图片有序保存

 #coding=utf-8
 import urllib
 import re
 #urllib 模块读取web页面相当于接口,第二次正则表达试提图片

 def gethtml(url):    #定义一个gethtml函数得到页面
     page = urllib.urlopen(url)
     html = page.read()
     return html
 #在原来的基础上修改添加正则表达式的语句 src="http://imgsrc.baidu.com/forum/w%3D580/sign=ab2da672e124b899de3c79305e061d59/82777fec54e736d1ac3b007a93504fc2d5626915.jpg"
 def getimg(html):
     reg = r'scr="(.+?\.jpg)"pic_ext'
     imgre = re.compile (reg)
     imglist = re.findall (imgre,html)  #牵扯到异步知识但还不算是,这里按顺序取得图片
     x = 0                              #return imglist 在原来的基础上添加for循环并保存到本地
     for imgurl in imglist:
         urllib.urlretrieve(imgurl,'%s.jpg' % x)
         x+=1

 html = gethtml("http://tieba.baidu.com/p/4674704187")
 print getimg(html)

urllib.urlretrieve()保存到本地,通过一个for循环对获取的图片连接进行遍历,为了使图片的文件名看上去更规范,对其进行重命名,命名规则通过x变量加1。保存的位置默认为程序的存放目录。