Python对天堂图片网的简单图片爬取

天堂网爬虫
爬虫是python最主要的应用领域之一,在了解了网站的结构之后,通过python就可以轻松实现数据的抓取,本次通过requests以及re库实现图片的抓取。

目标网址

天堂图片网

简单源代码

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
from requests import get
import re

pic_urls = []

for i in range(1,10):
url = 'http://www.ivsky.com/tupian/index_'+ str(i) + '.html'
response = get(url).text
pic_url = re.findall('<div class=\"il_img\"><a href=\"(.*?)\" title=\"',response,re.S)
for url in pic_url:
pic_urls.append('http://www.ivsky.com'+ url)

pictures = []
for url in pic_urls:
text = get(url).text
pictures.append(re.findall('<img src=\"(.*?)\"',text,re.S))


list1 = []
for i in range(len(pic_urls)):
list1.extend(pictures[i])
HD_pic = []
HD_p = []
for url in list1:
HD_pic.append(url.replace('/t/','/pre/'))
for url in HD_pic:
HD_p.append(url.replace('/m/' , '/pre/'))
HD_p

n = 0
for url in HD_pic:
n += 1
picture = get(url).content
with open('C:/Users/lee/Desktop/pic/%s.jpg' %n, 'wb') as f:
f.write(picture)

代码及简单解析

导入要使用的开源库,re为正则表达式需要的库

1
2
from requests import get
import re

  • 选择要下载的页数(例如10),通过简单的字符串处理得到相- 应的(10个)网址赋值给url
  • 然后通过requests库的get方法得到网站的内容并赋值给response
  • 接着运用正则表达式得到图片网址pic_url并将其添加到pic_urls
  • 其中pic_urls包含的是所有图集的网址。(由于每个图集中还有数量不等的图片,所以下面将每个图集中图片的网址提取出来)
1
2
3
4
5
6
7
pic_urls = []
for i in range(1,10):
url = 'http://www.ivsky.com/tupian/index_'+ str(i) + '.html'
response = get(url).text
pic_url = re.findall('<div class=\"il_img\"><a href=\"(.*?)\" title=\"',response,re.S)
for url in pic_url:
pic_urls.append('http://www.ivsky.com'+ url)

同上对get请求得到的url进行正则提取得到每个图片的网址.

pictures = []
for url in pic_urls:
    text = get(url).text
    pictures.append(re.findall('<img src=\"(.*?)\"',text,re.S))

在浏览器中单独输入某个网址会发现图片较小,需要进行正则替换得到高清的图片(将”/t/“替换成”/pre/“).

list1 = []
for i in range(len(pic_urls)):
    list1.extend(pictures[i])
for url in list1:
    HD_pic.append(url.replace('/t/','/pre/'))
for url in HD_pic:
    HD_p.append(url.replace('/m/' , '/pre/'))
HD_p

通过content得到二进制文件,再依次将其写入桌面新建的pic文件夹中

n = 0
for url in HD_pic:
    n += 1
    picture = get(url).content
    with open('C:/Users/lee/Desktop/pic/%s.jpg' %n, 'wb') as f:
        f.write(picture)

你可以在你指定的位置查看已经下载的图片。

-------------本文结束感谢您的阅读-------------