效果图:
代码:
# -*- coding: utf-8 -*-
# Filename: download_pics.py
# 下载一组图片
# 这组图片的 url 末位为 001 至 008
import requests
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1)'
headers = {'User-Agent':user_agent}
# http://img.ivsky.com/img/bizhi/pre/201802/04/slender_west_lake-001.jpg
url_0 = 'http://img.ivsky.com/img/bizhi/pre/201802/04/slender_west_lake-00'
num_list = range(1,9) # 生成列表[1,2,3,4,5,6,7,8],赋值给变量 num_list
for num in num_list: # for 循环,把列表 num_list 里的每个值分别赋值给 num
# 当 num 为 1时,str(num)把它转换为'1',然后用加号把 url_0、'1'、'.jpg'拼接起来,结果为'http://img.ivsky.com/img/bizhi/pre/201802/04/slender_west_lake-001.jpg'
url = url_0 + str(num) + '.jpg'
# 以下和爬单个图片基本相同
data = requests.get(url, headers=headers).content
filename = str(num) + '.jpg'
f = open(filename, 'wb')
f.write(data)
f.close()
print (url)
print('OK')
知识点:
注释
注释就是对代码的解释和说明。注释不会被编译。(通俗说就是:注释是给人看的,不会被执行)
Python中的注释分单行注释和多行注释
单行注释以 #
开头
# 这是一个注释
多行注释用三个单引号 '''
或者三个双引号 """
将注释括起来
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
校验 User-Agent
这是我们碰到的第一个反爬虫方式,也是最常见的一个。
1.在浏览器中找到自己的 User-Agent :
打开 chrome 的开发者工具;
选择 network 标签, 刷新网页(在打开调试工具的情况下刷新);
刷新后在左边找到该网页url,点击,然后选择右边的 headers,然后在 request headers 里就可以找到 User-Agent 了
把 User-Agent 复制下来
2.在代码中加入 User-Agent
user_agent = 'your_User-Agent'
headers = {'User-Agent':user_agent}
data = requests.get(url, headers=headers).content
其中 your_User-Agent 处填入上面复制的 User-Agent,别忘了引号,这是字符串
列表
列表用方括号 []
标识,元素用逗号隔开。列表的每一个元素对应着一个索引,索引代表元素的位置,第一个元素的索引是 0
,第二个元素的索引是 1
,以此类推。
列表的元素可以是数字、字符串、列表、元组、字典,而且一个列表的不同元素可以是不同数据类型。
列表是有序的对象集合,可以添加和删除其中的元素。列表可以切片。
# 创建列表
list1 = ['v1coder', 'spider', 2018, 11]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
list4 = [] # 创建一个空列表
range() 函数
range()函数可按参数生成连续的有序整数列表。
语法:
range(start, stop, step)
start: 计数从 start 开始。默认是从 0 开始。
end: 计数到 end 结束,但不包括 end。
step:步长,默认为1。
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10,2)
[1, 3, 5, 7, 9]
for循环
# 语法:
for item in sequence:
expressions
# sequence 为可迭代的对象,item 为序列中的每个对象。
# for 循环就是依次把 sequence 中的每个元素赋值给变量 item,然后执行缩进块的语句。
示例:
list1 = [1,2,3,4]
for x in list1:
print x
# 解释:
# 把列表中的第一个元素 1 赋值给变量 x,然后运行缩进块的语句 print x
# 再把列表中的第二个元素 2 赋值给 x,然后运行 print x
# 输出结果
1
2
3
4
字符串“加法”
可以用加号 +
把两个字符串拼接起来
示例:
str_1 = 'v1'
str_2 = 'coder'
str_3 = str_1 + str_2
print str_3
# 输出结果:
v1coder
str()函数
把对象转换成字符串。
>>> str(4)
'4'
教程目录:
0.《简介及准备》
1.《爬单个图片》
2.《下载一组网页上的图片》
3.《输出一个网页上的文字》
4.《获取电影天堂最新电影名称》
5.《糗事百科爬虫》
20181126
网友评论