美文网首页
分析Ajax请求并爬取今日头条的街拍图片

分析Ajax请求并爬取今日头条的街拍图片

作者: Xxxx_y | 来源:发表于2018-10-18 17:18 被阅读0次

    1,首先登陆今日头条(https://www.toutiao.com/)再搜索街拍

    2,查看网页源码,发现了索引页返回的数据是一个Json数据包

    查看网页的网络请求

    2当我们在网页中,下滑查看更多图片的时候,发现只有offset的数据在变化

    从0 ,20,40,

    3,所以我们开始爬取索引页

    通过requests,返回网页的信息

    3,分析返回的网页信息,提取索引页内的每个子页

    返回后的是一推Json数据

    其中子页的图片集,存放在如下

    先运用Beautifulsoup提取title名:

    然后运用正则表达式,提取图片集的url,并以字典的形式返回

    因为返回的数据中有多余的'\'的符号,所以这里的解决办法是:

    #由于匹配后的表达式中存在大量的\\字符,所以这里采用的replace将\\全部替代掉

    re =result.group(1)

    res =res.replace(r'\','')

    运用字符串的replace将‘\去除’

    由于发现提取的图片集的url中有许多重复的,这里采取的一个list(set())的方法去重

    获取索引中每个子页的title,子页的url,图片集的url

    3,将爬取后的数据储存到MongDB中:

    1,

    连接数据库

    2,

    由于数据返回的字典,所以可以直接插入

    四,将爬取后的图片下载到本地

    在这里,主要需要连接os库中的一些操作:

    python之OS模块详解

    1,os.getcwd() 获得目录的当前系统程序工作路劲

    2,os. chdir(‘目标目录’)  切换到目标目录

    3,os.listdir(‘字符串目录’)    列出字符串目录下的所有文件

    4,os.mkdir('目录')  创建目录

    5,os.remove('1.txt')      删除文件,文件不存在时会报错

    6,os.linesep      打印操作系统的分隔符,linux系统的分隔符\n,windows系统的分隔符\r\n,mac系统的分隔符\r

    7,os.path.join(os.getcwd(),'aaa', ‘bbb’, ‘ccc’)  拼接出来多级目录:E:\test\aaa\bbb\ccc

    8,os.path.exists(‘目录’)  判断目录是否存在

    9,os.path.split(‘文件或者目录’)  把最后的一个目录或者文件和前面的目录分开,返回一个tuple

    10,os.path.splitext(‘文件’)    把文件的后缀名和前面分开,返回一个元组

    二,需要理解,hashlib中的md5库中的hexdigest方法:将文件保存时,通过哈希函数对每个文件进行文件名的自动生成

                                                                                   当md5(content).hexdigest生成的命名,犹如指纹一样,是唯一的

    为了爬取的速度更快,运用的多进程爬取:

    from multiprocessingimport Pool

    第一个参数是函数名,第二个参数是一个迭代器,将迭代器中的数字作为参数依次传入函数中

    pool.map()

    源码:jiepai/__init__.py · XVhongye/分析Ajax请求并爬取今日头条的街拍图片 - 码云 Gitee.com

    相关文章

      网友评论

          本文标题:分析Ajax请求并爬取今日头条的街拍图片

          本文链接:https://www.haomeiwen.com/subject/dulszftx.html