python3网络爬虫爬取进日头条代码
import requests #1 from urllib.parse import urlencode #2 from requests import codes #3 import os #4 from hashlib import md5 #5 from multiprocessing.pool import Pool #6 import re #7 def get_page(offset): #8 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' } #9 base_url='https://www.toutiao.com/api/search/content/?' #10 url=base_url+urlencode(params) #11 try: #12 resp=requests.get(url) #13 print(url) #14 if 200==resp.status_code: #15 print(resp.json()) #16 return resp.json() #17 except requests.ConnectionError: #18 return None #19 def get_images(json): #20 if json.get('data'): #21 data=json.get('data') #22 for item in data: #23 if item.get('cell_type') is not None: #24 continue #25 title=item.get('title') #26 images=item.get('image_list') #27 for image in images: #28 origin_image=re.sub("list","origin",image.get('url')) #29 yield{ 'image':origin_image, 'title':title } #30 print('succ') #31 def save_image(item): #32 img_path='img'+os.path.sep+item.get('title') #33 print('succ2') #34 if not os.path.exists(img_path): #35 os.makedirs(img_path) #36 try: resp=requests.get(item.get('image')) #37 if codes.ok==resp.status_code: #38 file_path=img_path+os.path.sep+'{file_name}.{file_suffix}'.format( file_name=md5(resp.content).hexdigest(), file_suffix='jpg') #39 if not os.path.exists(file_path): #40 print('succ3') #41 with open(file_path,'wb')as f: #42 f.write(resp.content) #43 print('Downloaded image path is %s' % file_path)#44 print('succ4') #45 else: #46 print('Already Downloaded',file_path) #47 except requests.ConnectionError: #48 print('Falied to Save Image,item %s' % item) #49 def main(offset): #50 json=get_page(offset) #51 for item in get_images(json): #52 print(item) #53 save_image(item) #54 GROUP_START=0 #60 GROUP_END=7 #61 if __name__=='__main__': #62 pool=Pool() #63 groups=([x*30 for x in range(GROUP_START,GROUP_END+1)]) #64 pool.map(main,groups) #65 pool.close() #66 pool.join() #67
1.导入requests库
2.导入urlencode库
3.导入
4.导入os库
5.导入hashlib库中的md5加密
6.导入multiprocessing.poo中的多线程模块
7.导入正则表达式库
8.def定义了一个模块的变量,或者说是类的变量,称为方法
9.python大括号{ }花括号:代表dict字典数据类型,字典是由键对值组组成。冒号’:‘分开键和值,逗号’,‘隔开组.建立一个名为params的字典。
10.一个等号代表的含义是赋值,将某一数值赋给某个变量,比如a=3,将3这个数值赋予给a。即给base_url赋值。
11.当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至’/'做一下编码转换。urlencode(params)给之前的字典进行中文(服务器不识别的)进行转码。
12.异常处理try,except,这样可以放置出现一些对于用户不必要的数据。
13.r=requests.get(),requests库中发出请求的方法
14.print(url),打印出url,有助于我们判断请求的连接是否正确
15.if条件语句,如过正确就将执行下一步语句,不正确就会执行else或者返回Falied
16.对获取到的信息进行json解码,一般用法r.json()
17.return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回
程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return。Python 函数返回值return ,函数中一定要有return 返回值才是完整的函数,如果你没有定义Python 函数返回值,那么得到一个结果是None对象,而None表示没有任何值.
18.except中放置连接错误的异常事件,便于我们清楚知道出现连接问题事件
19.返回None
20.创建get_image()函数
21.if条件语句,判断是否获取网页中的data数据
22.对获取的data数据进行json解码
23.for循环,遍寻获取到的data
24.if条件语句判断cell_type是否为空,精准的确定是否是我们需要的图片
25.continue,表示如果条件不正确的话,将一直进行该循环。可以理解为continue可以帮助我们删除不想要的数据,输出我们想要的数据。
26.给title赋值为获取到的data数据中的title
27.给images赋值为获取到的data数据中的image_list
28.for循环,遍历images
29.利用正则表达式中的sub()函数来修改文本,删除不必要的数据,将获取到的数据中的所有list替换为origin
30.返回image 和title,相当于return,但是执行到yield是停止,知道新的条件出现,同时下一次开始执行的时候从上一次结束的地方的下一位开始执行
31.打印succ确保上面的程序执行正确,如果出现succ的话就可以确定上面的程序运行完成
32.创建函数save_image()
33.赋值给img_path,os.path.sep是系统分隔符的意思,相当于/。
34.打印succ2确保上面的代码运行正确
35.os即operating system(操作系统),Python 的 os 模块封装了常见的文件和目录操作。os.path模块主要用于文件的属性获取,exists是“存在”的意思,所以顾名思义,os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径.用if条件语句判断是否存在某个对象
36.创建一个名为img_path的文件夹
37.爬取目标网站
38.if条件语句,如果状态码为200的话就继续下一步操作
39.给file_path赋值
40.条件语句,同35
41.打印succ3确保if条件语句判断成功
42 43.新建一个名为file_path的文件并以写入的模式将文件保存为二进制模式
44.一种字符串格式化的语法, 基本用法是将值插入到%s占位符的字符串中。
%s,表示格式化一个对象为字符
“%±(正负号表示)3(数字表示字符串的长度)s”%(取代s的字符串)
%s string型 表示格式化一个对象为字符 “%s1”%S2 s1放置的是一个字符串(格式化字符串) S2放置的是一个希望要格式化的值
48.异常事件处理模块,连接错误
50.创建函数def main()
51.给json赋值
52.53.相当于实现翻页功能
60.61.定义分页起始和终止页数
62.可以认为为了调试模块,在模块导入的时候并不执行if下面的语句。
- 5行python代码实现简单的网络爬虫
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
- python网络爬虫代码
- python网络爬虫爬取图片代码
- python网络爬虫——基本概念及代码实现1
- python 网络爬虫代码
- 简易的网络爬虫代码-python
- Python实现爬虫从网络上下载文档的实例代码
- Python 实现网络爬虫 抓取静态网页【代码】
- Python实现简单网络爬虫--转自极客头条
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
- 用 Python 编写网络爬虫 笔记
- 500G python web、爬虫、数据分析、机器学习、大数据、前端实战项目视频代码免费分享
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
- 从零实现一个高性能网络爬虫(一)网络请求分析及代码实现
- python写网络爬虫:爬取糗事百科上的段子
- python用字符串操作20行代码简单爬虫入门+案例(爬取一章《三体》小说)
- 第一课 Python爬虫初识与网络请求
- 13行Python代码实现一个神经网络(Part 2 - 梯度下降法)
- 【网络爬虫】-WP0001-Anaconda_Python2_Python3_conda_Pip_pycharm环境配置