1 #!/usr/bin/env python

2 #encoding: utf-8

3

4 """

5 @version: python376 @author: Geoffrey7 @file: spider.py8 @time: 18-10-24 上午11:159 """

10 importjson11 importre12 from multiprocessing importPool13 importurllib314 urllib3.disable_warnings()15 from requests importRequestException16

17 from common.request_help importmake_session18 from db.mysql_handle importMysqlHandler19 from img_spider.settings import *

20

21

22

23 classSpiderTouTiao:24

25

26 def __init__(self, keyword):27 self.session = make_session(debug=True)28 self.url_index = 'https://www.toutiao.com/search_content/'

29 self.keyword =keyword30 self.mysql_handler =MysqlHandler(MYSQL_CONFIG)31

32 defsearch_index(self, offset):33 url =self.url_index34 data ={35 'offset': f'{offset}',36 'format': 'json',37 'keyword': self.keyword,38 'autoload': 'true',39 'count': '20',40 'cur_tab': '3',41 'from': 'gallery'

42 }43

44 try:45 response = self.session.get(url, params=data)46 if response.status_code is 200:47 json_data =response.json()48 with open(f'../json_data/搜索结果-{offset}.json', 'w', encoding='utf-8') as f:49 json.dump(json_data, f, indent=4, ensure_ascii=False)50 returnself.get_gallery_url(json_data)51 except:52 pass

53 print('请求失败')54

55 @staticmethod56 defget_gallery_url(json_data):57 dict_data =json.dumps(json_data)58 for info in json_data["data"]:59 title = info["title"]60 gallery_pic_count = info["gallery_pic_count"]61 article_url = info["article_url"]62 yieldtitle, gallery_pic_count, article_url63

64 defgallery_list(self, search_data):65 gallery_urls ={}66 for title, gallery_pic_count, article_url insearch_data:67 print(title, gallery_pic_count, article_url)68 response =self.session.get(article_url)69 html =response.text70 images_pattern = re.compile('gallery: JSON.parse\("(.*?)"\),', re.S)71 result =re.search(images_pattern, html)72

73 ifresult:74 #result = result.replace('\\', '')

75 #result = re.sub(r"\\", '', result)

76 result = eval("'{}'".format(result.group(1)))77 result =json.loads(result)78 #picu_urls = zip(result["sub_abstracts"], result["sub_titles"], [url["url"] for url in result["sub_images"]])

79 picu_urls = zip(result["sub_abstracts"], [url["url"] for url in result["sub_images"]])80 #print(list(picu_urls))

81 gallery_urls[title] =picu_urls82 else:83 print('解析不到图片url')84

85 with open(f'../json_data/{title}-搜索结果.json', 'w', encoding='utf-8') as f:86 json.dump(result, f, indent=4, ensure_ascii=False)87

88 break

89

90 #print(gallery_urls)

91 returngallery_urls92

93 defget_imgs(self, gallery_urls):94 params =[]95 for title, infos in(gallery_urls.items()):96 for index, info inenumerate(infos):97 abstract, img_url =info98 print(index, abstract)99 response =self.session.get(img_url)100 img_content =response.content101 params.append([title, abstract, img_content])102

103 with open(f'/home/geoffrey/图片/今日头条/{title}-{index}.jpg', 'wb') as f:104 f.write(img_content)105

106 SQL = 'insert into img_gallery(title, abstract, imgs) values(%s, %s, %s)'

107 self.mysql_handler.insertOne(SQL, [title, abstract, img_content])108 self.mysql_handler.end()109

110 print(f'保存图集完成' + '-'*50)111 #SQL = 'insert into img_gallery(title, abstract, imgs) values(%s, %s, %s)'

112 #self.mysql_handler.insertMany(SQL, params)

113 #self.mysql_handler.end()

114

115

116 defmain(offset):117 spider =SpiderTouTiao(KEY_WORD)118 search_data =spider.search_index(offset)119 gallery_urls =spider.gallery_list(search_data)120 spider.get_imgs(gallery_urls)121 spider.mysql_handler.dispose()122

123

124 if __name__ == '__main__':125 groups = [x*20 for x inrange(GROUP_START, GROPE_END)]126

127 pool = Pool(10)128 pool.map(main, groups)129

130 #for i in groups:

131 #main(i)

python爬取头条图集_python爬取今日头条关键字图集相关推荐

  1. Python3:爬取新浪、网易、今日头条、UC四大网站新闻标题及内容

    Python3:爬取新浪.网易.今日头条.UC四大网站新闻标题及内容 以爬取相应网站的社会新闻内容为例: 一.新浪: 新浪网的新闻比较好爬取,我是用BeautifulSoup直接解析的,它并没有使用J ...

  2. 今日头条的排名算法_今日头条搜索seo排名怎么做? 今日头条搜索排名规则...

    今日 既然今日头条宣布做搜索引擎,怎么少的了"头条seo"的研究呢? 一."头条seo"是什么? 头条seo指的是在今日头条app上用关键词搜索结果排名靠前.头 ...

  3. 今日头条的排名算法_今日头条搜索seo排名怎么做 今日头条搜索排名规则

    既然今日头条宣布做搜索引擎,怎么少的了"头条seo"的研究呢? 一."头条seo"是什么? 头条seo指的是在今日头条app上用关键词搜索结果排名靠前.头条号称 ...

  4. 今日头条 h5 源码 php,今日头条H5

    [实例简介] 今日头条H5,移动端demo,HTML5. 今日头条H5,移动端demo,HTML5. [实例截图] [核心代码] 今日头条_移动端_demo └── 今日头条 ├── article. ...

  5. python 头条号_python爬取今日头条收藏目录

    今日头条收藏以异步加载方式加载,可用以下两种方式分析,达到以下效果: 第一种: 将收藏网页拉直最底部,直到不产生新的收藏信息,将网页下载,另存到本地,形成新的htm文件,这时可以用分析静态网页的方式进 ...

  6. python 柱状图上显示字体_Python爬取百部电影数据,我发现了这个惊人真相!

    2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%:国产电影总票房411.75亿元,同比增长8.65%,市场占比 ...

  7. python抓取微博评论_Python爬取新浪微博评论数据,你有空了解一下?

    开发工具 Python版本:3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装Pyth ...

  8. python爬取手机微信_Python爬取微信好友

    前言 今天看到一篇好玩的文章,可以实现微信的内容爬取和聊天机器人的制作,所以尝试着实现一遍,本文记录了实现过程和一些探索的内容 itchat安装 对微信的控制可以使用itchat来实现,我们找到itc ...

  9. python开源代码百度盘_python爬取百度云网盘资源-源码

    今天测试用了一下python爬取百度云网盘资源. 代码片段import urllib import urllib.request import webbrowser import re def yun ...

最新文章

  1. 两个黑箱问题 ——深度神经网络和脑神经网络
  2. AT串口抽象层的设计思路及代码实现
  3. Dockerd docker-containerd docker-containerd-shim runC
  4. 恭喜!清华大学,再添院士!
  5. 5 Transforms 转移 笔记
  6. windows远程桌面无法拷贝文件的问题与解决方法
  7. ssm注解配置连接mysql_基于注解和配置类的SSM(Spring+SpringMVC+Mybatis)项目详细配置...
  8. 计算机网络-自顶向下方法(7th) 第五章 Problems 英文题目1-15+中文答案
  9. 存储过程实例(用存储过程获取单张表的总记录数)
  10. c语言二进制转十六进制代码,C语言--二进制转十六进制
  11. 计算机发展的雏形,( )是现代计算机的雏形。
  12. WIN10 禁用 credentital guard Device Guard或Credential Guard与Workstation不兼容
  13. oracle 的exp是什么,oracle中exp和imp是什么,oracle中exp和imp有何区别 | 学步园
  14. 数据库设计1-数据库设计简述
  15. sort by age(vector)
  16. 独家 | 爱奇艺如何用大数据助力娱乐工业革命?
  17. 宏颜获水: 百度ceo 李彦宏惨槽泼水,懵了!
  18. kindle 电子书
  19. 高校部署房产管理系统可实现那些目标?
  20. 为什么企业要安装局域网监控软件?

热门文章

  1. 基于media-server简单的rtsp服务端实现
  2. csdn 直接粘贴带图片与代码的文章到自己博客中或者到今日头条的解决办法
  3. AI art 实验:同样的Prompt, DALLE2 跟 Disco Diffusion 的创作大比拼
  4. Java教程:Java常用开发工具有哪些?
  5. 布隆的盾能挡机器人_LOL:布隆才是联盟最尽职的辅助,一个盾技能全都挡
  6. 爸爸!再不陪我,我就长大了!推荐每个爸爸都看一遍!
  7. obsidian日记使用方法
  8. OpenGL 里面的灯光 (Emitted Light, Ambient Light, Diffuse Light, Specular Light)
  9. c语言中取字符串的首元素,C语言字符串
  10. Qt 之按钮鼠标 悬浮、按下、松开后的效果