资讯专栏INFORMATION COLUMN

利用Python爬取百度贴吧图片

YPHP / 1292人阅读

摘要:背景介绍我大一的时候学校就开设了,但是并没有好好学,基本等于是什么也不会,最近才开始看,所以本身也是摸着石头过河,见谅心得讲真的,爬虫确实不像别人想象的那样简单,爬虫首先要静下心来,细心寻找目标网站的布局规律,最重要的是的变化,这是一个考验

背景介绍

我大一的时候学校就开设了 python,但是并没有好好学,基本等于是什么也不会,最近才开始看,所以本身也是摸着石头过河,见谅...

心得

讲真的,爬虫确实不像别人想象的那样简单,爬虫首先要静下心来,细心寻找目标网站的布局规律,最重要的是 url 的变化,这是一个考验耐心与细心的过程;爬虫没有一个固定的套路,我们得时刻周旋于各种反爬虫机制中,并深陷不能自拔(sorry,废话太多了),我们只能学习这种爬虫的思想,一定要多加练习,掌握知识的最佳途径就是实践,不要眼高手低,跟着大神的脚步模仿、练习,大神都是这样一步一步走过来的,加油。。。

遇到的问题

首先我们要知道所谓的爬虫其实说到原理上就是:1、如何获取到想要的目标信息?2、如何存入本地?3、如何转换格式
基于这三点我来简单说明一下
1、我在爬取百度贴吧的图片时,刚开始也是一度彷徨,不知道该如何下手,于是我把教程看了好几遍,又反复琢磨百度贴吧的html格式,终于我发现了我想要的数据的规律,从变化中寻求规律,这才是我们爬虫的解决之道,于是我发现它的 url 每次前半截基本都不会发生变化,并且会跟着相应的翻页数进行变化,这是第一个规律
2、细心查找之下发现,它的突变的标签的上下父子节点也基本是固定的,这也给我们带来了很大的便捷,于是,我就在虽然这个图片的地址是一直发生变化的,但是我们可以从它的父子节点入手从而可以拿到这个图片的url地址,最后拿着这个url去请求图片然后下载到本地这样不就行了嘛
3、这样我们的关注点就变成了如何拿到它的相关的父子节点信息呢?我仔细的查找了相关的知识点,发现在python中,处理html数据的虽然有很多框架可以做到,但是有三大最流行的技术:正则表达式,这个相信不用我多说了,无论什么语言都有正则表达式,并且由于是各种语言内置的,因此配置简单,但是使用难度是最高的(果然任何事物都有其有利有弊的一面,无所例外);第二个就是 xpath,这个相对于正则难度就要小点,需要自己熟悉一下它的写法,并且需要导入lxml这个库,在下载时需要注意(下载是比较麻烦的,我当时就是搞了好久,版本一值不对,考验耐心);第三个就是 BeautifulSoup,这个是三个里面最简单的一个,比较容易上手,有专门的官方文档说明(飞机票:https://beautifulsoup.readthe...)
4、我个人是比较推荐使用正则表达式的,什么效率方面的就不说了,推崇的是它的使用面最广,什么语言都可以直接使用(由于我本身还使用别的语言,比如java、scala、go、node、python等),所以这也是我特别青睐它的理由(正则基础一定要学好,慢慢练习,加油哦)
5、接下来就是数据处理了,这里我是将这些图片直接保存到本项目下的一个文件夹下面了,后续可以配置数据库,直接写入数据中。好了,大致思路就介绍到这里了,毕竟需要动手做一遍才能理解,欢迎交流(ps:在源码中也给出了我的私人邮箱哦)

源代码
#! /usr/bin/env python
# -*- coding:utf-8 -*-

"""
爬取百度贴吧的数据
author : shiro.liang.yi@gmail.com
data : 2018-11-07 22:27
"""

import urllib2
import urllib

def loadPage(url,filename):
    """
        作用:根据 url 发送请求,获取服务器响应文件
    :param url: 需要爬取的 url 地址
    :return:
    """
    print "正在下载 " + filename
    request = urllib2.Request(url,headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"})
    response = urllib2.urlopen(request)
    return response.read()

def writePage(html, filename):
    """
    作用:将 html 内容写入到本地
    :param html: 服务器响应文件内容
    :return:
    """
    print "正在保存 " + filename
    # 文件写入
    with open(filename.decode("utf-8"), "w") as f:
        f.write(html)
    print "-" * 30


def tiebaSpider(url, beginPage, endPage):
    """
    作用:贴吧爬虫调度器,负责组合处理每个页面的 url
    url : 贴吧 url 的前部分
    beginPage:起始页
    endPage:结束页
    :return:
    """
    for page in range(beginPage, endPage + 1):
        pn = (page - 1) * 50
        filename = "第" + str(page) + "页.html"
        fullurl = url + "&pn=" + str(pn)
        print fullurl
        html = loadPage(fullurl,filename)
        #print html
        writePage(html,filename)

if __name__ == "__main__":
    kw = raw_input("请输入需要爬取的贴吧名:")
    beginPage = int(raw_input("请输入起始页:"))
    endPage = int(raw_input("请输入结束页:"))

    url = "http://tieba.baidu.com/f?"
    key = urllib.urlencode({"kw" : kw})
    fullurl = url + key
    tiebaSpider(fullurl,beginPage,endPage)
声明
原创手敲不易,转载请注明出处,谢谢。我是拉丁小毛,欢迎大家关注我哦,一起交流,共同进步。有问题可以邮我哦(util.you.com@gmail.com)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44947.html

相关文章

  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 零基础如何学爬虫技术

    摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...

    KunMinX 评论0 收藏0
  • 段友福利:Python爬取段友之家贴吧图片和小视频

    摘要:由于最新的视频整顿风波,内涵段子被迫关闭,广大段友无家可归,但是最近发现了一个段友的,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看我不是打广告的,没收广告费的同时,之前同事也发了一个贴吧的段子聚居地,客官稍等,马上奉上 由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个段友的app,版本更新也挺快,正在号召广大段友回家,如下图,有...

    singerye 评论0 收藏0
  • 尝试用Python3爬取网页图片的过程记录

    摘要:上有一个关于下载百度贴吧里的美女图片的练习题,最近正好在学爬虫相关的知识,拿来练练手。这是我的目标网页。 Github上有一个关于下载百度贴吧里的美女图片的练习题,最近正好在学爬虫相关的知识,拿来练练手。这是我的目标网页。最开始的时候我在网上找到一个类似的案例,代码如下图:showImg(https://segmentfault.com/img/bVbh2SX);稍作修改,运行之后得到...

    alin 评论0 收藏0
  • python爬虫学习 】python3.7 scrapy 安装,demo实例,实践:爬取百度

    摘要:安装可能的问题问题解决实例教程中文教程文档第一步创建项目目录第二步进入创建爬虫第三步创建存储容器,复制项目下的重命名为第四步修改提取数据引入数据容器第五步解决百度首页网站抓取空白问题设置设置用户代理解决相关解决数据保存乱 pip 安装 pip install scrapy 可能的问题: 问题/解决:error: Microsoft Visual C++ 14.0 is requi...

    asoren 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<