初学Python爬虫,学习资料是这篇博客:Python爬虫入门教程 经过前边两个例子(糗事百科爬虫和百度贴吧爬虫)的学习,我自己写了一个练习的例子:爬煎蛋网的妹子图,福利哦(*^__^*) 

#煎蛋网爬图
#导入了BeautifulSoup4(正则)和requests(代替urllib2,但是我不会使,还是用的lib2)包
#注意1:煎蛋的页数是倒着来的,从大往小来,输入的时候要注意
#注意2:报错:HTTPError: Service Temporarily Unavailable,换个伪装的浏览器或许可行


#import requests
import urllib2
import re
import os
from bs4 import BeautifulSoup

#访问网址,得到图片的地址,存在一个列表中
def getjpg(startpage,endpage):
    myjpgs = []
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'
    headers = {'User-Agent':user_agent} 
    for i in range(startpage,endpage+1):
        url = 'http://jandan/ooxx/page-' + str(i) + '#comments'
        req = urllib2.Request(url,headers=headers)
        res = urllib2.urlopen(req)
	#BeautifulSoup和正则表达式re作用一样,使用前要先安装包,语法我也不太了解,这个select('p > img')就是匹配所有<p>标签下的所有<img>标签
        jpgs = BeautifulSoup(res).select('p > img')
        alljpgs = re.findall('src="(.*?)"',str(jpgs),re.S)
        #通过type()可知这都是列表,可以列表合并
        myjpgs = myjpgs + alljpgs
    return myjpgs


#保存到本地
def savejpg(myjpgs):
    j = 1
    for myjpg in myjpgs:
        # os.path.splitext()获取文件后缀名,此函数把前边的名称和后缀名作为两个元素存储为列表,[0]是前边的[1]是后缀名
        lastname = os.path.splitext(myjpg)[1]
	#用with open() as 函数操作文件更规范,‘wb’是二进制模式,as后边的名称自己随便取
        with open('E:\\pytest\\pyget\\test25_jiandan\\' + str(j) + str(lastname),'wb') as op:
            print u'正在保存第%d张……' % j
            j = j+1
            #我们得到的是图的地址,要像网址一样打开访问一次,然后读一下再写入,直接写的话是个字符串
            m = urllib2.urlopen(myjpg)
            op.write(m.read())
            op.close()

#程序开始
endpage = int(raw_input(u'请输入起始页数:'))
startpage = int(raw_input(u'请输入终止页数:'))
savejpg(getjpg(startpage,endpage))


更多推荐

Python爬虫入门学习例子之煎蛋网(福利哦)