爬虫第一次

来源:互联网 发布:编程语言 知乎 编辑:程序博客网 时间:2024/06/05 12:11

    经过将近一天的琢磨,和查看资料,终于自己的第一个小爬虫出来了,很简单,但是对于我来说是一个进步

    爬取的网站  妹子多啊,进去的哥们们注意啊......

    早晨看了scrapy框架,本来想用框架来写的,感觉有点麻烦,就直接写了三个函数,去完成。

 首先对要爬取的页面分析:

        在右侧一些列的li里包含着一组图片的url,我们首先要获取到这个url,

def getPageNumber(n):    url = 'http://www.mmjpg.com/home/%s' % (n)    response = urllib2.urlopen(url).read()    #response = HtmlResponse(url = url, body = body)    urlLinks = Selector(text = response).xpath('//ul/li/span/a/@href').extract()    return urlLinks


 这个函数就是在获取每一个li里的具体url

    接下来,当我们得到了一组这个具体的url,就要对这一组里的每一个对象进行处理了

 以 .../mm/1048/2  这个url就是查看一整组图片的一张的地址

 进去之后我们会发现这一组里有很多张(大概每一组都有40多张把),我们把这个查看每一组每一张的具体url找出来

def openUrlGetDetail(url):    # url http://www.mmjpg.com/mm/1048/+页面内的page就可以得到    response = urllib2.urlopen(url+"/1").read()    pageNumber = Selector(text = response).xpath('//div[@id="page"]/a/text()').extract()    article = Selector(text = response).xpath('//div[@class="article"]/h2/text()').extract()    detailUrls = []    # pageNumber 得到的是[u'1', u'2'...u'\0edv]在具体的那一页最后写的是显示全部照片    for i in range(1, int(pageNumber[-2]) + 1):        urlTmp = url + '/%s' % i        detailUrls.append(urlTmp)    return detailUrls, article



   这个函数就是拼装每一组每一张的具体url,article是获得这一组的标题,用这个标题创建一个文件夹,把每一张以article+inderx命名存到相应的文件夹

          在每一个具体的页面我们可以找到一个<img src=....>这个就是图片存在的位置,通过img的src我们就可以去下载这张图片了.

def downImage(detailUrls, article):    os.mkdir('/home/zs/python/splider/firstBlood/%s' % article[0])    image_store_dir = '%s%s' % ('./', article[0])    print image_store_dir    # detailUrls 类似 http://www.mmjpg.com/mm/1048/2...    for index, url in enumerate(detailUrls):        body = urllib2.urlopen(url).read()        response = HtmlResponse(url = url ,body= body)        imageUrl = response.xpath('//div[@id="content"]/a/img/@src').extract()        filename = image_store_dir + '/' + str(article[0]) + '%s' % (index + 1) + '.jpg'        print 'downloading...    %s' % filename        with open(filename, 'wb') as fp:            con = urllib.urlopen(imageUrl[0])            fp.write(con.read())



  该函数会创建一个以article为名字的文件夹,我们的图片就会存在那里.

for i in range(1,10):    urlLinks = getPageNumber(i)    for url in urlLinks:        detailUrls = openUrlGetDetail(url)        downImage(detailUrls[0], detailUrls[1])


 

简单的爬了10页


然而,就在我高兴的准备去看图的时候,悲剧了.......这个网站有了反爬机制了...爬到的都是一种图片.......wuwuwuwu

图片不重要,自己学会怎么去写才重要,这是第一个小爬虫,我会继续努力...


原创粉丝点击