如何用python爬取图片数据_Python3.6爬虫入门练手小项目之一:使用爬虫爬取糗事百科网站图片项目...

news/2024/5/20 13:54:44/文章来源:https://blog.csdn.net/weixin_39618574/article/details/110043619

1.步骤解析

这个小项目的目的是让大家学会如何爬取网站上的图片,下面是简单介绍。

实现步骤如下:

1.首先要写最简单的代码,确定能通过url访问糗百

2.将糗百服务器返回的数据进行解码,得到完整HTML代码

3.查看糗百HTML代码,进行正则匹配操作,爬取用户发布的图片

上面就是我们本次小项目案例的实现流程,下面我们将进行实验。

2.逐步实现

1.使用urlopen编写最简单的访问代码

Python

import urllib.request

# 糗百第一页的链接

url = "https://www.qiushibaike.com/8hr/page/1/"

# 通过urlopen打开url

response = urllib.request.urlopen(url)

# 读取返回的结果

data = response.read()

print(data)

1

2

3

4

5

6

7

8

9

10

importurllib.request

# 糗百第一页的链接

url="https://www.qiushibaike.com/8hr/page/1/"

# 通过urlopen打开url

response=urllib.request.urlopen(url)

# 读取返回的结果

data=response.read()

print(data)

运行结果如下,报错:

Python

D:\python\python.exe E:/技术学习/Python代码/15.爬取糗事百科小项目/easy_1.py

Traceback (most recent call last):

File "E:/技术学习/Python代码/15.爬取糗事百科小项目/easy_1.py", line 7, in

response = urllib.request.urlopen(url)

File "D:\python\lib\urllib\request.py", line 223, in urlopen

return opener.open(url, data, timeout)

File "D:\python\lib\http\client.py", line 266, in _read_status

raise RemoteDisconnected("Remote end closed connection without"

http.client.RemoteDisconnected: Remote end closed connection without response

1

2

3

4

5

6

7

8

9

D:\python\python.exeE:/技术学习/Python代码/15.爬取糗事百科小项目/easy_1.py

Traceback(mostrecentcalllast):

File"E:/技术学习/Python代码/15.爬取糗事百科小项目/easy_1.py",line7,in

response=urllib.request.urlopen(url)

File"D:\python\lib\urllib\request.py",line223,inurlopen

returnopener.open(url,data,timeout)

File"D:\python\lib\http\client.py",line266,in_read_status

raiseRemoteDisconnected("Remote end closed connection without"

http.client.RemoteDisconnected:Remoteendclosedconnectionwithoutresponse

2.添加异常捕获代码

呀!!报错了,最简单的代码访问不了,出现错误异常情况……这里我们优化一下,添加异常捕获代码吧,别直接崩溃。咱们添加上次上次说到的URLError和HTTPError试试吧……

Python

import urllib.request

import urllib.error

# 糗百第一页的链接

url = "https://www.qiushibaike.com/8hr/page/1/"

try:

# 通过urlopen打开url

response = urllib.request.urlopen(url)

except urllib.error.HTTPError as e:

print(e.code)

except urllib.error.URLError as e:

print(e.reason)

else:

# 读取返回的结果

data = response.read()

print(data)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

importurllib.request

importurllib.error

# 糗百第一页的链接

url="https://www.qiushibaike.com/8hr/page/1/"

try:

# 通过urlopen打开url

response=urllib.request.urlopen(url)

excepturllib.error.HTTPErrorase:

print(e.code)

excepturllib.error.URLErrorase:

print(e.reason)

else:

# 读取返回的结果

data=response.read()

print(data)

运行试一下:发现还是直接出错崩溃。。。。。仔细看一下崩溃原因:

http.client.RemoteDisconnected: Remote end closed connection without response

哦,明白了。原来这不是url链接访问出错,而是http.client下爆出的异常错误,继续修改一下:

Python

import urllib.request

import urllib.error

import http.client

# 糗百第一页的链接

url = "https://www.qiushibaike.com/8hr/page/1/"

try:

# 通过urlopen打开url

response = urllib.request.urlopen(url)

except urllib.error.HTTPError as e:

print(e.code)

except urllib.error.URLError as e:

print(e.reason)

except http.client.error as e:

print(e)

else:

# 读取返回的结果

data = response.read()

print(data)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

importurllib.request

importurllib.error

importhttp.client

# 糗百第一页的链接

url="https://www.qiushibaike.com/8hr/page/1/"

try:

# 通过urlopen打开url

response=urllib.request.urlopen(url)

excepturllib.error.HTTPErrorase:

print(e.code)

excepturllib.error.URLErrorase:

print(e.reason)

excepthttp.client.errorase:

print(e)

else:

# 读取返回的结果

data=response.read()

print(data)

再运行一下,就可以OK了;

Python

D:\python\python.exe E:/技术学习/Python代码/15.爬取糗事百科小项目/easy_1.py

Remote end closed connection without response

进程已结束,退出代码0

1

2

3

4

D:\python\python.exeE:/技术学习/Python代码/15.爬取糗事百科小项目/easy_1.py

Remoteendclosedconnectionwithoutresponse

进程已结束,退出代码0

打印出来的错误是,远程计算机没有响应,链接结束。。也就是说我们链接失败了……

3.添加header,假装成浏览器

上面最简单的爬虫代码出现错误,错误原因是:Remote end closed connection without response。。也就是服务器不理我……我的可爱小爬虫去招惹他,它对我不理睬……很伤心啊,为啥呢?一般情况下这是header请求头的原因,服务器接到我写的小爬虫的访问请求了,但是并没有任何关于header的信息,服务器感觉这小子可能有鬼,不是个好东西,还是不回复为妙。。。于是乎,它就拒绝了响应。要解决这个问题,就需要在请求头中添加header信息。把我们的小爬虫伪装一下,打扮成浏览器的模样。(小小爬虫,乔装打扮一下,变成假浏览器,让服务器的门卫放行小爬虫)

Python

import urllib.request

import http.client

import ssl

# 取消全局的ssl认证

ssl._create_default_https_context = ssl._create_unverified_context

# 封装头信息,伪装成浏览器

header = {

'Connection': 'Keep-Alive',

'Accept-Language': 'zh-CN,zh;q=0.8',

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',

'Accept-Encoding': 'gzip, deflate',

'X-Requested-With': 'XMLHttpRequest',

}

url = "https://www.qiushibaike.com/8hr/page/1/"

try:

# 使用包含header的信息,进行请求

request = urllib.request.Request(url, headers=header)

# 通过urlopen打开包含header的url链接,用来获取数据

response = urllib.request.urlopen(request)

except urllib.error.HTTPError as e:

print(e.code)

except urllib.error.URLError as e:

print(e.reason)

except http.client.error as e:

print(e)

else:

# 读取返回的结果

data = response.read()

print(data)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

importurllib.request

importhttp.client

importssl

# 取消全局的ssl认证

ssl._create_default_https_context=ssl._create_unverified_context

# 封装头信息,伪装成浏览器

header={

'Connection':'Keep-Alive',

'Accept-Language':'zh-CN,zh;q=0.8',

'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',

'Accept-Encoding':'gzip, deflate',

'X-Requested-With':'XMLHttpRequest',

}

url="https://www.qiushibaike.com/8hr/page/1/"

try:

# 使用包含header的信息,进行请求

request=urllib.request.Request(url,headers=header)

# 通过urlopen打开包含header的url链接,用来获取数据

response=urllib.request.urlopen(request)

excepturllib.error.HTTPErrorase:

print(e.code)

excepturllib.error.URLErrorase:

print(e.reason)

excepthttp.client.errorase:

print(e)

else:

# 读取返回的结果

data=response.read()

print(data)

好的,改写完成之后,我们继续运行:

Python

D:\python\python.exe E:/技术学习/Python代码/15.爬取糗事百科小项目/easy.py

b'\x1f\x8b\x08\x00\xba\xabF[\x02\xff\xed}……

进程已结束,退出代码0

1

2

3

D:\python\python.exeE:/技术学习/Python代码/15.爬取糗事百科小项目/easy.py

b'\x1f\x8b\x08\x00\xba\xabF[\x02\xff\xed}……

进程已结束,退出代码0

哈哈,成功访问了,并且得到服务器返回的数据了。。。呀,还是不对??这返回的啥玩意东西?不是HTML代码呀,这咋回事?且慢且慢,让我们打开360浏览器,开发者工具抓一下数据包。

1-1-1024x555.png

1.打开360浏览器的开发者工具

2.点击network菜单

3.此时左侧为空,然后刷新url栏目重新链接

4.找到一开始的那个,也就糗百主域

5.点击进去,查看response响应的信息。

这下明白了,原来返回的数据是使用了gzip进行压缩了,我们要想获取HTML页码,还要进行解压缩操作。下面升级我们的代码:

Python

import urllib.request

import http.client

import ssl

import gzip

import zlib

#取消全局ssl验证

ssl._create_default_https_context = ssl._create_unverified_context

def gzip_decompress(data):

try: # 尝试解压

print('正在使用gzip解压.....')

data = gzip.decompress(data)

print('gzip解压完毕!')

except:

print('未经gzip压缩, 无需解压')

return data

# deflate压缩算法

def deflate_decompress(data):

try:

print('正在使用deflate解压.....')

return zlib.decompress(data, -zlib.MAX_WBITS)

print('deflate解压完毕!')

except zlib.error:

return zlib.decompress(data)

# 封装头信息,伪装成浏览器

header = {

'Connection': 'Keep-Alive',

'Accept-Language': 'zh-CN,zh;q=0.8',

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',

'Accept-Encoding': 'gzip, deflate',

'X-Requested-With': 'XMLHttpRequest',

}

url = "https://www.qiushibaike.com/8hr/page/1/"

try:

# 使用包含header的信息,进行请求

request = urllib.request.Request(url, headers=header)

# 通过urlopen打开包含header的url链接,用来获取数据

response = urllib.request.urlopen(request)

except urllib.error.HTTPError as e:

print(e.code)

except urllib.error.URLError as e:

print(e.reason)

except http.client.error as e:

print(e)

else:

# 读取返回的结果

content = response.read()

# 用于判断是何种压缩算法,如果是gzip则调用gzip算法

encoding = response.info().get('Content-Encoding')

# 判断使用的是不是gzip压缩算法

if encoding == 'gzip':

print(content)

content = gzip_decompress(content)

print(content)

# deflate很少有人在用了,老网站可能用,这里也判断一下

elif encoding == 'deflate':

content = deflate_decompress(content)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

importurllib.request

importhttp.client

importssl

importgzip

importzlib

#取消全局ssl验证

ssl._create_default_https_context=ssl._create_unverified_context

defgzip_decompress(data):

try:# 尝试解压

print('正在使用gzip解压.....')

data=gzip.decompress(data)

print('gzip解压完毕!')

except:

print('未经gzip压缩, 无需解压')

returndata

# deflate压缩算法

defdeflate_decompress(data):

try:

print('正在使用deflate解压.....')

returnzlib.decompress(data,-zlib.MAX_WBITS)

print('deflate解压完毕!')

exceptzlib.error:

returnzlib.decompress(data)

# 封装头信息,伪装成浏览器

header={

'Connection':'Keep-Alive',

'Accept-Language':'zh-CN,zh;q=0.8',

'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',

'Accept-Encoding':'gzip, deflate',

'X-Requested-With':'XMLHttpRequest',

}

url="https://www.qiushibaike.com/8hr/page/1/"

try:

# 使用包含header的信息,进行请求

request=urllib.request.Request(url,headers=header)

# 通过urlopen打开包含header的url链接,用来获取数据

response=urllib.request.urlopen(request)

excepturllib.error.HTTPErrorase:

print(e.code)

excepturllib.error.URLErrorase:

print(e.reason)

excepthttp.client.errorase:

print(e)

else:

# 读取返回的结果

content=response.read()

# 用于判断是何种压缩算法,如果是gzip则调用gzip算法

encoding=response.info().get('Content-Encoding')

# 判断使用的是不是gzip压缩算法

ifencoding=='gzip':

print(content)

content=gzip_decompress(content)

print(content)

# deflate很少有人在用了,老网站可能用,这里也判断一下

elifencoding=='deflate':

content=deflate_decompress(content)

这里咱们已经明确了糗百使用的是gzip压缩算法,可以直接只使用gzip进行解压缩。但是这里考虑到大家可能以后抓的网站属于老网站,,老网站一般使用的是古老的deflate压缩算法,现在很少人用了。关于gzip的知识,大家

运行一下打印结果如下:

Python

D:\python\python.exe E:/技术学习/Python代码/test/test.py

b'\x1f\x8b\x08\x00\xda\xcbF[\x02\xff\xed}\xebW\x1bI\x96……

正在使用gzip解压.....

gzip解压完毕!

b'\n\n

\n

1

2

3

4

5

D:\python\python.exeE:/技术学习/Python代码/test/test.py

b'\x1f\x8b\x08\x00\xda\xcbF[\x02\xff\xed}\xebW\x1bI\x96……

正在使用gzip解压.....

gzip解压完毕!

b'\n\n\n

这里距离我们想要的HTML代码数据,格式按网页格式输出,还需要加一些转码:

Python

# 用于判断是何种压缩算法,如果是gzip则调用gzip算法

encoding = response.info().get('Content-Encoding')

# 判断使用的是不是gzip压缩算法

if encoding == 'gzip':

print(content)

content = gzip_decompress(content)

print(content.decode(encoding='utf-8', errors='strict'))

# deflate很少有人在用了,老网站可能用,这里也判断一下

elif encoding == 'deflate':

content = deflate_decompress(content)

1

2

3

4

5

6

7

8

9

10

# 用于判断是何种压缩算法,如果是gzip则调用gzip算法

encoding=response.info().get('Content-Encoding')

# 判断使用的是不是gzip压缩算法

ifencoding=='gzip':

print(content)

content=gzip_decompress(content)

print(content.decode(encoding='utf-8',errors='strict'))

# deflate很少有人在用了,老网站可能用,这里也判断一下

elifencoding=='deflate':

content=deflate_decompress(content)

也就是加入: print(content.decode(encoding=’utf-8′, errors=’strict’))将其转换成utf-8格式的数据,这样输出的就是HTML文件了。至此,我们的小爬虫终于历经千辛万苦,爬到了糗百的HTML代码数据。

3.爬取一个页面的图片代码

下面哥要进行正则解析了,坑了我好久啊啊啊嗯啊啊啊

Python

孩子的世界就是这么的单纯。

糗事#120676262

1

2

3

4

5

6

7

8

9

孩子的世界就是这么的单纯。

我们要抓图片,这里需要看网页的html源码,找到用户发的图片信息。p

2.png

Python

import urllib.request

import http.client

import ssl

import gzip

import zlib

import re

import urllib.error as error

import os

ssl._create_default_https_context = ssl._create_unverified_context

def gzip_decompress(data):

try: # 尝试解压

print('正在使用gzip解压.....')

data = gzip.decompress(data)

print('gzip解压完毕!')

except:

print('未经gzip压缩, 无需解压')

return data

# deflate压缩算法

def deflate_decompress(data):

try:

print('正在使用deflate解压.....')

return zlib.decompress(data, -zlib.MAX_WBITS)

print('deflate解压完毕!')

except zlib.error:

return zlib.decompress(data)

# 封装头信息,伪装成浏览器

header = {

'Connection': 'Keep-Alive',

'Accept-Language': 'zh-CN,zh;q=0.8',

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',

'Accept-Encoding': 'gzip, deflate',

'X-Requested-With': 'XMLHttpRequest',

}

url = "https://www.qiushibaike.com/8hr/page/1/"

try:

# 使用包含header的信息,进行请求

request = urllib.request.Request(url, headers=header)

# 通过urlopen打开包含header的url链接,用来获取数据

response = urllib.request.urlopen(request)

except urllib.error.HTTPError as e:

print(e.code)

except urllib.error.URLError as e:

print(e.reason)

except http.client.error as e:

print(e)

else:

# 读取返回的结果

content = response.read()

# 用于判断是何种压缩算法,如果是gzip则调用gzip算法

encoding = response.info().get('Content-Encoding')

# 判断使用的是不是gzip压缩算法

if encoding == 'gzip':

content = gzip_decompress(content).decode(encoding='utf-8', errors='strict')

# deflate很少有人在用了,老网站可能用,这里也判断一下

elif encoding == 'deflate':

content = deflate_decompress(content)

# 这里获取了所有的img链接,包括头像什么的。

imgre = re.compile('p

imglist = imgre.findall(content) # re.findall() 方法读取html 中包含 imgre(正则表达式)的 数据

print(imglist)

# 把筛选的图片地址通过for循环遍历并保存到本地

# 核心是urllib.urlretrieve()方法,直接将远程数据下载到本地,图片通过x依次递增命名

x = 0

dirpath = 'E:/爬虫数据/1.糗百图片/'

if os.path.exists(dirpath):

print("文件夹已经存在")

else:

os.makedirs(dirpath)

print("文件夹不存在!刚刚已经创建")

for imgurl in imglist:

# 将正则表达式编译 成pattern对象

pattern = re.compile('\w?//pic.qiushibaike.com/.*.jpeg')

# 进行匹配查找

if pattern.match(imgurl):

# 如果匹配成功则进行下载,保存到本地文件夹

try:

# 糗百的html代码 中 关于图片的代码,没有http,需要手动加上

image_data = urllib.request.urlopen("https:"+imgurl).read()

image_path = dirpath + str(x) + '.jpeg'

x += 1

print(image_path)

with open(image_path, 'wb') as image_file:

image_file.write(image_data)

image_file.close()

except error.URLError as e:

print('Download failed')

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

importurllib.request

importhttp.client

importssl

importgzip

importzlib

importre

importurllib.erroraserror

importos

ssl._create_default_https_context=ssl._create_unverified_context

defgzip_decompress(data):

try:# 尝试解压

print('正在使用gzip解压.....')

data=gzip.decompress(data)

print('gzip解压完毕!')

except:

print('未经gzip压缩, 无需解压')

returndata

# deflate压缩算法

defdeflate_decompress(data):

try:

print('正在使用deflate解压.....')

returnzlib.decompress(data,-zlib.MAX_WBITS)

print('deflate解压完毕!')

exceptzlib.error:

returnzlib.decompress(data)

# 封装头信息,伪装成浏览器

header={

'Connection':'Keep-Alive',

'Accept-Language':'zh-CN,zh;q=0.8',

'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',

'Accept-Encoding':'gzip, deflate',

'X-Requested-With':'XMLHttpRequest',

}

url="https://www.qiushibaike.com/8hr/page/1/"

try:

# 使用包含header的信息,进行请求

request=urllib.request.Request(url,headers=header)

# 通过urlopen打开包含header的url链接,用来获取数据

response=urllib.request.urlopen(request)

excepturllib.error.HTTPErrorase:

print(e.code)

excepturllib.error.URLErrorase:

print(e.reason)

excepthttp.client.errorase:

print(e)

else:

# 读取返回的结果

content=response.read()

# 用于判断是何种压缩算法,如果是gzip则调用gzip算法

encoding=response.info().get('Content-Encoding')

# 判断使用的是不是gzip压缩算法

ifencoding=='gzip':

content=gzip_decompress(content).decode(encoding='utf-8',errors='strict')

# deflate很少有人在用了,老网站可能用,这里也判断一下

elifencoding=='deflate':

content=deflate_decompress(content)

# 这里获取了所有的img链接,包括头像什么的。

imgre=re.compile('p

imglist=imgre.findall(content)# re.findall() 方法读取html 中包含 imgre(正则表达式)的 数据

print(imglist)

# 把筛选的图片地址通过for循环遍历并保存到本地

# 核心是urllib.urlretrieve()方法,直接将远程数据下载到本地,图片通过x依次递增命名

x=0

dirpath='E:/爬虫数据/1.糗百图片/'

ifos.path.exists(dirpath):

print("文件夹已经存在")

else:

os.makedirs(dirpath)

print("文件夹不存在!刚刚已经创建")

forimgurlinimglist:

# 将正则表达式编译 成pattern对象

pattern=re.compile('\w?//pic.qiushibaike.com/.*.jpeg')

# 进行匹配查找

ifpattern.match(imgurl):

# 如果匹配成功则进行下载,保存到本地文件夹

try:

# 糗百的html代码 中 关于图片的代码,没有http,需要手动加上

image_data=urllib.request.urlopen("https:"+imgurl).read()

image_path=dirpath+str(x)+'.jpeg'

x+=1

print(image_path)

withopen(image_path,'wb')asimage_file:

image_file.write(image_data)

image_file.close()

excepterror.URLErrorase:

print('Download failed')

这里将爬取的图片保存到了硬盘上,首先判断硬盘是否已经存在文件夹,如果存在,则直接写入图片数据。如果不存在,则进行自动创建文件夹操作。爬取结果如下:

Python

D:\python\python.exe E:/技术学习/Python代码/test/test.py

正在使用gzip解压.....

gzip解压完毕!

['/static/images/banner.png', '//pic.qiushibaike.com/system/avtnew/2858/2858128

E:/爬虫数据/1.糗百图片/0.jpeg

E:/爬虫数据/1.糗百图片/1.jpeg

E:/爬虫数据/1.糗百图片/2.jpeg

E:/爬虫数据/1.糗百图片/3.jpeg

E:/爬虫数据/1.糗百图片/4.jpeg

E:/爬虫数据/1.糗百图片/5.jpeg

E:/爬虫数据/1.糗百图片/6.jpeg

E:/爬虫数据/1.糗百图片/7.jpeg

E:/爬虫数据/1.糗百图片/8.jpeg

E:/爬虫数据/1.糗百图片/9.jpeg

E:/爬虫数据/1.糗百图片/10.jpeg

E:/爬虫数据/1.糗百图片/11.jpeg

E:/爬虫数据/1.糗百图片/12.jpeg

E:/爬虫数据/1.糗百图片/13.jpeg

进程已结束,退出代码0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

D:\python\python.exeE:/技术学习/Python代码/test/test.py

正在使用gzip解压.....

gzip解压完毕!

['/static/images/banner.png','//pic.qiushibaike.com/system/avtnew/2858/2858128

E:/爬虫数据/1.糗百图片/0.jpeg

E:/爬虫数据/1.糗百图片/1.jpeg

E:/爬虫数据/1.糗百图片/2.jpeg

E:/爬虫数据/1.糗百图片/3.jpeg

E:/爬虫数据/1.糗百图片/4.jpeg

E:/爬虫数据/1.糗百图片/5.jpeg

E:/爬虫数据/1.糗百图片/6.jpeg

E:/爬虫数据/1.糗百图片/7.jpeg

E:/爬虫数据/1.糗百图片/8.jpeg

E:/爬虫数据/1.糗百图片/9.jpeg

E:/爬虫数据/1.糗百图片/10.jpeg

E:/爬虫数据/1.糗百图片/11.jpeg

E:/爬虫数据/1.糗百图片/12.jpeg

E:/爬虫数据/1.糗百图片/13.jpeg

进程已结束,退出代码0

3-1024x590.png

4.本篇小结

大家可以升一下级,写抓任意页面的图片。本章,咱们一步一步爬取了糗百的图片。虽然上面东西大家可能看着比较简单,实际上,我在同步编写的代码的时候,遇到了好几个坑爹的地方。下一篇我们将要称热打铁,将继续爬取糗百的段子,作者,评论数,点赞数等等。

赞赏作者

123-3.png微信赞赏zhifub-1.png支付宝赞赏

喜欢 (5)or分享 (0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_734484.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站导航颜色停留_关乎网站用户体验的10个关键要素,用好了事半功倍!

互联网时代,几乎每个稍微成型的企业都有自己在网络上的窗口——企业网站。企业网站能否在极短时间内抓住用户眼球,增加用户停留时间,让用户找出兴趣点,进而发起在线咨询,最终形成转化,达到企业网站最终提升…

如何避免网站收录低和收录周期长

无论是新站还是旧站都会遇到网站收录低或者收录周期长的问题,那么该如何去解决这一问题呢?下面咱们聊一聊对网站的一些建议。 一、内容重复度高  很多使用采集工具或者转载他人文章来更新内容,这样的内容重复度非常高,严重影响用户体验&am…

Kali linux 2016.2(Rolling)中metasploit的搜集特定网站的目录结构

parent directory site: testfire.net可以看到,在这个testfire.NET中存在有几个隐藏目录(返回代码403:没有权限访问)。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/68702…

手把手教学使用Halo搭建自己的博客网站

工作需要学习,学习需要积累。网上有很多好的博客系统。我们可以去"CSDN","博客园"等这种大厂提供的博客空间,也可以自己搭建高逼格的独立博客。例如,适合github的hexo,大众的wordpress&#xff0c…

https改为http访问_网站更改为https后,数据统计不到了

http协议网站更改为https后,很多数据统计不到了。是很多SEO和运营人员会遇到的比较严重的问题,数据渠道计入不准确,那很多的考核就没办继续。该怎么办呢?https协议对比http协议而言,针对于我们的网站来说会更加的安全。…

Hive(27):分析网站uvpv等多指标综合案例

一、实现功能 1.分析网站日志,获得日期,uv,pv,登录人数,游客人数,平均访问时长,二跳率,独立ip数等关键信息。 其中: 登录:userid有值,会员&…

(转)程序员实用工具网站

【原文地址:https://blog.csdn.net/m0_38106923/article/details/100130354】 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/m0_3810…

Loadrunner12 - WebTours网站使用录制回放时错误(2)——Session自动关联问题

当你发现你录制回放完成webTours后loadrunner12提示你脚本通过,但实际webTours中并没有发生任何实际的变化时,那可能就是session关联的问题了。 首先,我们重新录制,录制完成后,LR自动扫描可能存在的关联,LR…

宝塔自动备份网站到FTP空间

上次分享了宝塔自动备份网站到阿里云oss中,但是阿里云的oss是要收存储费用的,而且我非常在意的一点就是这样会把阿里云的API密码明文存储在面板后台,感觉这样也不太好,就一直在想其他的自动备份方案,正好前几天腾讯云活…

经营10多年的科技网站月光博客每月可以赚多少钱?[图]

2019独角兽企业重金招聘Python工程师标准>>> 经营10多年的科技网站月光博客每月可以赚多少钱? 相信你也想知道这个问题吧,我反正是充满了好奇。月光博客是十多年前就已经崛起的一个优秀博客,主打科技主题,曾经引得很多…

JSP——实现简单的计数器(统计访问网站的次数)

1.index.jsp文件 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <html> <body> <%! int i0; //成员变量 %> <% i; //Java程序片 %&g…

简洁精美的企业单页门户网站(纯静态模板)

为什么80%的码农都做不了架构师&#xff1f;>>> <!DOCTYPE html> <html lang"en" class"no-js"> <!-- BEGIN HEAD --> <head> <meta charset"utf-8"/> <title>钦州日之新科技有限公司</titl…

在官方网站获得JMeter工具的步骤

首先我们了解一下JMeter是什么&#xff0c;以下是百度百科对于JMeter的解释说明。 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资…

做SEO需要掌握哪些核心技术

每一个像我咨询SEO培训的学员都问同一个问题&#xff0c;做SEO需要掌握哪些技术&#xff0c;SEO分为专职SEO跟兼职SEO&#xff0c;无技术也能做SEO&#xff0c;我认为掌握更多的技术是提高SEO的基本。做SEO优化不像做数学加减法&#xff0c;更像是文章写作&#xff0c;没有固定…

nginx 1.18 没有sbin文件夹_提升网站安全性隐藏nginx信息

一般使用nginx的web网站&#xff0c;访问网站时&#xff0c;可以从请求头中看到使用了nginx以及nginx的版本号。暴露这些信息将给网站带来一定的风险&#xff0c;因此安装nginx时最好把这些信息隐藏。隐藏nginx 版本号与WEB服务器信息如果未安装nginx&#xff0c;先去官网下载压…

新手前端练手网站_影视后期新手大礼包

点击上方蓝色字关注我们~为什么很多人学习影视后期学不下去&#xff1f;为什么很多人学习影视后期不知道是为了什么&#xff1f;无论是工作需要&#xff0c;或者兴趣爱好&#xff0c;又或者转行设计。还在迷茫的你&#xff0c;请认真看完下面的视频&#xff0c;会对你有十分大的…

什么叫基于web的网站_什么叫响应式网站?响应式网站的好处

响应式网站又叫自适应网站(三站合一网站)是一项新技术&#xff0c;那么什么是响应式的网站呢&#xff1f;响应式web设计(responsive web design)的理念是&#xff1a;集中创建页面的图片排版大小&#xff0c;可以智能地根据用户行为以及使用的设备环境(系统平台、手机屏幕尺寸、…

如何在页面上加个日历_想知道网站是如何工作的么?

上网是大多数人的第二天性。我们每天搜寻无数个网站查询信息&#xff0c;但是你是否静下心来思考过什么是网站&#xff0c;它是如何工作的&#xff1f;为了回答这些问题(以及更多其他问题)&#xff0c;我们开始了一个新系列&#xff1a;我们将在这个月的每个星期都发布一篇新文…

wamp修改php,wampserver改变默认网站目录的办法

开发过php项目的都知道&#xff0c;大多数都会用到wampserver&#xff0c;接下来小编为大家分享下wampserver改变默认网站目录的方法。需要修改的文件有以下三个&#xff1a;apache2的配置文件 httpd.conf 和 Wampserver的 配置文件wampmanager.ini和wampmanager.tpl其中httpd.…

linux查看服务器网络延迟,查看实时网速 - 远程操作Linux网络设置_服务器应用_Linux公社-Linux系统门户网站...

工具一&#xff1a;slurm安装sudo apt-get install slurm (Ubuntu系统)查看网速命令slurm -i eth0 (etho为网卡名)工具二&#xff1a;nloadubuntu的安装可以使用apt进行&#xff0c;其他系统安装过程如下wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gztar zxvf …