**

*爬取今日头条街拍图片 *

**

# coding=utf-8
import os
import re
import time
from multiprocessing.pool import Pool
import requests
from urllib.parse import urlencodeheaders={'Cookie': '你的cookie','User-Agent':'你的user-agent'}
#得到首页面上相应详情页的url
def get_search_page(offset):params = {'aid':'24','app_name': 'web_search','offset': offset,'format':'json','keyword':'街拍','autoload':'true','count':'20','en_qc':'1','cur_tab':'1','from':'search_tab','pd':'synthesis','timestamp': int(round(time.time() * 1000)),}base_url = 'https://www.toutiao.com/api/search/content/?' + urlencode(params)print(base_url)try:response1 = requests.get(base_url,headers=headers)#print(type(response1))#search_res = json.loads(requests.get(url+urlencode(params),headers=headers).text,encoding='utf-8')['data']if response1.status_code == 200:json1=response1.json()#print(json1)#if json1.get('data'):for item in json1.get('data'):title=item.get('title')url_group=item.get('share_url')try:if title!=None and url_group!=None:yield {'title':item.get('title'),'url_group':item.get('share_url')}except:print('非图片类型页面')except requests.ConnectionError:return None#得到图片的集合
def get_images_group(url_group):print('正在进行详情页面解析')response2=requests.get(url_group,headers=headers)try:if response2.status_code == 200:content1s=re.findall('[a-zA-z]+://[^\s]*&quot',response2.text,re.S)if (content1s==None):print("文章类型不对,没有找到图片集合",url_group)return None#content3s=re.findall('/pgc-image/[^\s]*&quot',response2.text,re.S)#print(content1s)for content1 in content1s:content2=re.sub('&quot','',content1)content3=re.sub('[a-zA-z]+://[^\s]*/pgc-image/','',content2)yield {'name': content3,'image_url': content2,}#print(response2.text)except ConnectionError:print('无法连接')return None
#保存图片
def save_image(item,title):try:response = requests.get(item.get('image_url'))if response.status_code == 200:file_path1='C:/Users/Desktop/图片/爬虫/'+title+'/'#print(file_path1)file_path=file_path1+'{0}.{1}'.format(item.get('name'),'jpg')if not os.path.exists(file_path):try:os.makedirs(file_path1)except:print('路径已经存在', file_path1)with open(file_path, 'wb') as f:f.write(response.content)f.close()else:print('已经下载', file_path)except requests.ConnectionError:print('保存图片失败')#主函数
def main(offset):for item1 in get_search_page(offset):url_group= item1.get('url_group')title=item1.get('title')for item2 in get_images_group(url_group):save_image(item2,title)print(offset)GROUP_START = 1
GROUP_END = 20if __name__ == '__main__':pool = Pool()# 创建进程池,可以选择创建进程池的数量groups = ([x * 20 for x in range(GROUP_START, GROUP_END + 1)])pool.map(main, groups)# 将数组中的每个元素提取出来当作函数的参数,创建一个个进程,放进进程池中# 第一个参数是函数,第二个参数是一个迭代器,将迭代器中的数字作为参数依次传入函数中pool.close()#关闭进程池,不再接受新的进程pool.join()#主进程阻塞等待子进程的退出

爬取今日头条街拍图片相关推荐

  1. Scrapy 爬取今日头条街拍图片

    scrapy 爬取今日头条图片保存至本地 之前用 requests 爬取过今日头条街拍的图片,当时只是爬取每篇文章的缩略图,今天尝试用 scrapy 来大规模爬取街拍详细图片. 分析页面 今日头条的内 ...

  2. Python爬虫:爬取今日头条“街拍”图片(修改版)

    前言 在参考<Python3网络爬虫开发实战>学习爬虫时,练习项目中使用 requests ajax 爬取今日头条的"街拍"图片,发现书上的源代码有些已经不适合现在了, ...

  3. python爬取今日头条_爬取今日头条街拍图片

    参考于崔庆才的Python爬虫教程,但是崔的视频时间过长,今日头条网站反爬虫也有了变化,因此写下此文章来记录自己的爬取过程遇到的问题,也给大家一些借鉴.欢迎大家讨论. 一.获取索引页. 我们会发现do ...

  4. 使用ajax爬取今日头条街拍图片

    文章目录 分析请求 获取一组信息 解析json 获取图片列表 本地存储 整合功能 分析请求 地址:https://www.toutiao.com/search/?keyword=%E8%A1%97%E ...

  5. 分析Ajax爬取今日头条街拍图片

    # -*- coding:UTF-8 -*- import requests import time import os from hashlib import md5def get_page(off ...

  6. 利用Ajax爬取今日头条头像,街拍图片。关于崔庆才python爬虫爬取今日头条街拍内容遇到的问题的解决办法。

    我也是初学爬虫,在看到崔庆才大佬的爬虫实战:爬取今日头条街拍美图时,发现有些内容过于陈旧运行程序时已经报错,网页的源代码早已不一样了.以下是我遇到的一些问题. 1.用开发者选项筛选Ajax文件时预览看 ...

  7. python爬虫今日头条_python爬虫—分析Ajax请求对json文件爬取今日头条街拍美图

    python爬虫-分析Ajax请求对json文件爬取今日头条街拍美图 前言 本次抓取目标是今日头条的街拍美图,爬取完成之后,将每组图片下载到本地并保存到不同文件夹下.下面通过抓取今日头条街拍美图讲解一 ...

  8. python爬取今日头条街拍,Python3今日头条街拍爬虫

    学习了大才哥的在线视频教程,特来这里总结分享一下. 不同于上一篇糗事百科的爬虫,这里爬取今日头条街拍需要分析ajax请求得来的数据. 首先这里是爬取的起始页 可以看到当我们往下拉滚动条的时候,新数据是 ...

  9. [Python3网络爬虫开发实战] --分析Ajax爬取今日头条街拍美图

    [Python3网络爬虫开发实战] --分析Ajax爬取今日头条街拍美图 学习笔记--爬取今日头条街拍美图 准备工作 抓取分析 实战演练 学习笔记–爬取今日头条街拍美图 尝试通过分析Ajax请求来抓取 ...

最新文章

  1. java读取属性文件的方法_java读取属性文件的方法
  2. mysql加删查语句_MySQL基本语句——增、删、查、改
  3. python读数据库的通信协议是,Python操作SQLite数据库过程解析
  4. 那些方式可以合并php数组,php中数组合并的几种方法
  5. hadoop入门小知识点
  6. 8.12模拟:dp递推
  7. 设置网页文字禁止复制
  8. python image模块需要安装吗_python Image模块安装
  9. mysql for windows 64_MySQL 5.6 for Windows 解压缩版配置安装(win 10 64位亲测)附安装包下载链接...
  10. 昆明北大附中2021高考成绩查询,北大附中云南实验学校2021年招生代码
  11. CSDI2018广州关于《Nginx》的分享(附文字速录与PPT)
  12. swf播放器 android8,网极swf安卓8.0版本-新版网极swf播放器支持安卓8.0下载-游戏大玩家...
  13. 喜欢是可以培养的,学习也是
  14. CSS3 filter滤镜详解
  15. 【noi.ac】#283. 唐时月夜
  16. 2012最新网站手工注入详解教程
  17. 北漂9年了,37岁的我跳槽进了国企,开启了一段新的人生旅程
  18. java括号用法_Java双括弧使用技巧
  19. Gradio快速搭建ML/DL Web端服务
  20. 股市投资必修课二十八--前瞻性地把握未来

热门文章

  1. 十本书,谁猜得出第一是什么名字
  2. 被市场「遗忘」的匹克体育
  3. gii无法访问 yii2_yii框架中无法访问gii
  4. Android四大组件之一服务(Service)
  5. java 项目文件夹_java项目三大文件夹的区别(package,source folder,folder)
  6. mysql面试题重点难点
  7. ASP.NET MVC5 使用NPOI导出ExceL 返回浏览器下载
  8. ie11兼容问题汇总及解决方案
  9. 移动APP测试经验总结
  10. 移动端APP测试总结