爬取今日头条Ajax请求
网络编程 2021-07-05 10:37www.168986.cn编程入门
今天长沙网络推广就为大家分享一篇关于爬取今日头条Ajax请求的文章,长沙网络推广觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随长沙网络推广来看看吧
网址
搜索头条
可以得到这个网址
开发者工具查看
我们在搜索中并没有发现上面的文字,那么我们可以初步判定,这个由Ajax加载,然后渲染出来的。此时切换到xhr过滤,可以看到确实是ajax请求。
观察请求的特点,发现只有offset是改变的,而且一次加20,。
我们可以用它来控制数据分页,然后把图片下载下来。代码如下
import requests import os from urllib.parse import urlencode from hashlib import md5 from multiprocessing.pool import Pool from requests import codes def get_page(offset): params = { "offset":offset, "format":"json", "keyword":"街拍", "autoload":"true", "count":"20", "cur_tab":"1", "from":"search_tab" } url = 'https://.toutiao./search_content/?'+urlencode(params) try: response = requests.get(url) if response.status_code == 200: # print(url) return response.json() except requests.ConnectionError: return None # get_page(0) def get_images(json): if json.get('data'): for item in json.get('data'): if item.get('cell_type') is not None: continue title = item.get('title') images = item.get('image_list') for image in images: yield { 'title':title, 'image':'https:' + image.get('url'), } def save_image(item): #os.path.sep 路径分隔符‘//' img_path = 'img' + os.path.sep + item.get('title') if not os.path.exists(img_path): os.makedirs(img_path) try: resp = requests.get(item.get('image')) # print(type(resp)) if codes.ok == resp.status_code: file_path = img_path + os.path.sep + '{file_name}.{file_suffix}'.format( file_name=md5(resp.content).hexdigest(),#md5是一种加密算法获取图片的二进制数据,以二进制形式写入文件 file_suffix='jpg') if not os.path.exists(file_path): with open(file_path,'wb')as f: f.write(resp.content) print('Downladed image path is %s' % file_path) else: print('Already Downloaded',file_path) except requests.ConnectionError: print('Failed to Save Image,item %s' % item) def main(offset): json = get_page(offset) for item in get_images(json): print(item) save_image(item) GROUP = 0 GROUP_END = 2 if __name__ == '__main__': pool = Pool() groups = ([x20 for x in range(GROUP,GROUP_END)]) pool.map(main,groups) #将groups一个个调出来传给main函数 pool.close() pool.join() #保证子进程结束后再向下执行 pool.join(1) 等待一秒
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对狼蚁SEO的支持。如果你想了解更多相关内容请查看狼蚁网站SEO优化相关链接
上一篇:Ajax报错400的参考解决办法
下一篇:ajax实现页面的局部加载
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程