爬取妹子图

作者: 网络编程  发布:2019-06-25

先是网址的分析,该网址有早晚的反爬虫计策,所以回复正是参与headers(这几天是小白,近期不知底具体为毛那样做)

爬取妹子图(requests BeautifulSoup),

---苏醒内容开头---

  刚刚入门爬虫,明天先对于单个图集实行爬取,过几天再拓展翻页爬取。

  使用requests库和BeautifulSoup库

  目的网站:妹子图

后日是对此单个图集的爬取,就挑选四个进行爬取,小编选拔的链接为:

首先网址的剖析,该网址有必然的反爬虫攻略,所以回复正是参加headers(近些日子是小白,近日不知器械体为毛那样做)

Hostreferer = {
    'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    'Referer':'http://www.mzitu.com'
}
Picreferer = {
    'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    'Referer':'http://i.meizitu.net'
}

前多个头作为须要网址,后二个头作为破解盗链使用

获得页面HTML代码

用requests库的get方法,加上Hostreferer

def get_html(url):#获得页面html代码
    req = requests.get(url, headers=Hostreferer)
    html = req.text
    return html

 

得到图集名称以及图集最大页数

分析网页构成如图所示,图集名称包蕴在h2标签内,且该标签在任何HTML代码里有唯一的class="main-title",

而最大页数只是被span标签包涵,无法透过质量来提取。所以提取图集名称选择标具名 属性名一同提取,而最大页数就利用将span标签全体找寻,最大页数在span标签中第拾位,

 图片 1

def get_page_name(url):#获得图集最大页数和名称
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    span = soup.findAll('span')
    title = soup.find('h2', class_="main-title")
    return span[10].text, title.text

 

猎取图片url链接

  深入分析页面内容,含有图片链接的img标签中有叁个alt属性的值是跟图集名称同样,可以用那几个来直接找到那么些标签,当然也得以先找到div标签中的class属性是main-inage,再找到img的src属性,这里本身就选用第一种方式。

图片 2

def get_img_url(url, name):
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    img_url = soup.find('img', alt= name)
    return img_url['src']

 

将图片存入本地

  赢得图片url链接之后要讲图片存到本地,在呼吁图片url的时候要插手Picreferer,不然网址会认为你是四个爬虫,会返还给您二个盗链图

该方法传入的参数有3个,第叁个是图表url,第四个当前图片的页数,用作创设文件,第七个是图集名称,在蕴藏在此之前先创造了一个名称是图集名称的文件夹,那样就会将图片存入钦定文件夹

def save_img(img_url, count, name):
    req = requests.get(img_url, headers=Picreferer)
    with open(name '/' str(count) '.jpg', 'wb') as f:
        f.write(req.content)

 

一体化代码

import requests
from bs4 import BeautifulSoup
import os

Hostreferer = {
    'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    'Referer':'http://www.mzitu.com'
}
Picreferer = {
    'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    'Referer':'http://i.meizitu.net'
}

def get_page_name(url):#获得图集最大页数和名称
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    span = soup.findAll('span')
    title = soup.find('h2', class_="main-title")
    return span[10].text, title.text

def get_html(url):#获得页面html代码
    req = requests.get(url, headers=Hostreferer)
    html = req.text
    return html

def get_img_url(url, name):
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    img_url = soup.find('img', alt= name)
    return img_url['src']

def save_img(img_url, count, name):
    req = requests.get(img_url, headers=Picreferer)
    with open(name '/' str(count) '.jpg', 'wb') as f:
        f.write(req.content)

def main():
    old_url = "http://www.mzitu.com/123114"
    page, name = get_page_name(old_url)
    os.mkdir(name)
    for i in range(1, int(page) 1):
        url = old_url   "/"   str(i)
        img_url = get_img_url(url, name)
        #print(img_url)
        save_img(img_url, i, name)
        print('保存第'   str(i)   '张图片成功')
main()

 

  在main方法中先诉求到图集的称号和最大页数,并且接纳名称创造一个文书夹来囤积图片。再从1到最大页数做二个for循环,

接下来图片的每一页是     图集首页  / 现阶段页数,得到含有图片内容的url链接,前边就能够将获得图片存入本地。

 

爬取结果

图片 3

 

  文件夹名称即为图集名称,内部图片以页数作为文件名。

 

 

 

#日前就先举行一个图集的爬取,前面爬取八个图集作者会尽快更新,有哪些难题能够在俗世争论,迎接我们谈谈。

BeautifulSoup), ---复苏内容开头--- 刚刚入门爬虫,前几日先对于单个图集举办爬取,过几天再展开翻页爬取。 使用request...

前一个头作为诉求网址,后贰个头作为破解盗链使用

翻页爬取

上面计划上马多少个页面包车型地铁爬取,先将前方爬取贰个图集的措施开始展览打包

再者在爬取进程中冒出三个标题,提醒 你的主机中的软件中止了一个已确立的连天 ,那些主题素材还未找到化解办法,也未找明发生的切切实实原因。

def get_html(url):#获得页面html代码
    req = requests.get(url, headers=Hostreferer)
    html = req.text
    return html

 

def get_atlas_list(url):
    req = requests.get(url, headers=Hostreferer)
    soup = BeautifulSoup(req.text, 'lxml')
    atlas = soup.find_all(attrs={'class':'lazy'})
    atlas_list = []
    for atla in atlas:
        atlas_list.append(atla.parent['href'])
    return atlas_list

 

而最大页数只是被span标签包括,不能通过品质来领取。所以提取图集名称选拔标签字 属性名一同提取,而最大页数就使用将span标签全体寻觅,最大页数在span标签中第十二个人,

这是本身写的率先篇较长的博客,还应该有为数十分多未健全的地点,希望我们见谅。

 

图片 4图片 5

将图片存入本地

  文件夹名称即为图集名称,内部图片以页数作为文件名。

获得页面HTML代码

 

 

import requests
from bs4 import BeautifulSoup
import os

Hostreferer = {
    'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    'Referer':'http://www.mzitu.com'
}
Picreferer = {
    'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    'Referer':'http://i.meizitu.net'
}

def get_page_name(url):#获得图集最大页数和名称
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    span = soup.findAll('span')
    title = soup.find('h2', class_="main-title")
    return span[10].text, title.text

def get_html(url):#获得页面html代码
    req = requests.get(url, headers=Hostreferer)
    html = req.text
    return html

def get_img_url(url, name):
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    img_url = soup.find('img', alt= name)
    return img_url['src']

def save_img(img_url, count, name):
    req = requests.get(img_url, headers=Picreferer)
    with open(name '/' str(count) '.jpg', 'wb') as f:
        f.write(req.content)

def main():
    old_url = "http://www.mzitu.com/123114"
    page, name = get_page_name(old_url)
    os.mkdir(name)
    for i in range(1, int(page) 1):
        url = old_url   "/"   str(i)
        img_url = get_img_url(url, name)
        #print(img_url)
        save_img(img_url, i, name)
        print('保存第'   str(i)   '张图片成功')
main()

将爬取一整夜图集实行李包裹装,方便后续的翻页爬取

明天是对此单个图集的爬取,就选用三个拓展爬取,小编选用的链接为:

率先页是初始网站,可是页数为1的链接也是直接进去第一页,所以全部页的url就足以用以上通式改造页数实行遍历。

接下来图片的每一页是     图集首页  / 当前页数,获取含有图片内容的url链接,前边就足以将收获图片存入本地。

 

 

在展开爬取多个图集前先插足二个艺术,在爬取图集名称的时候,由于名称的字符不限,所以恐怕出现含有文件夹中不可能出现的片段字符,举例:/ : ? < > 等

def save_img(img_url, count, name):
    req = requests.get(img_url, headers=Picreferer)
    with open(name '/' str(count) '.jpg', 'wb') as f:
        f.write(req.content)
 1 import requests
 2 from bs4 import BeautifulSoup
 3 import os
 4 import re
 5 
 6 Hostreferer = {
 7     'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
 8     'Referer':'http://www.mzitu.com'
 9 }
10 Picreferer = {
11     'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
12     'Referer':'http://i.meizitu.net'
13 }
14 
15 def get_page_name(url):#获得图集最大页数和名称
16     html = get_html(url)
17     soup = BeautifulSoup(html, 'lxml')
18     span = soup.findAll('span')
19     title = soup.find('h2', class_="main-title")
20     return span[10].text, title.text
21 
22 def get_html(url):#获得页面html代码
23     req = requests.get(url, headers=Hostreferer)
24     html = req.text
25     return html
26 
27 def get_img_url(url, name):
28     html = get_html(url)
29     soup = BeautifulSoup(html, 'lxml')
30     img_url = soup.find('img', alt= name)
31     return img_url['src']
32 
33 def save_img(img_url, count, name):
34     req = requests.get(img_url, headers=Picreferer)
35     new_name = rename(name)
36     with open(new_name '/' str(count) '.jpg', 'wb') as f:
37         f.write(req.content)
38 
39 def rename(name):
40     rstr = r'[/\:*?<>|]'
41     new_name = re.sub(rstr, "", name)
42     return new_name
43 
44 def save_one_atlas(old_url):
45     page, name = get_page_name(old_url)
46     new_name = rename(name)
47     os.mkdir(new_name)
48     
49     print("图集--"   name   "--开始保存")
50     for i in range(1, int(page) 1):
51         url = old_url   "/"   str(i)
52         img_url = get_img_url(url, name)
53         # print(img_url)
54         save_img(img_url, i, name)
55         print('正在保存第'   str(i)   '张图片')
56     print("图集--"   name   "保存成功")
57 
58 
59 def get_atlas_list(url):
60     req = requests.get(url, headers=Hostreferer)
61     soup = BeautifulSoup(req.text, 'lxml')
62     atlas = soup.find_all(attrs={'class':'lazy'})
63     atlas_list = []
64     for atla in atlas:
65         atlas_list.append(atla.parent['href'])
66     return atlas_list
67 
68 def save_one_page(start_url):
69     atlas_url = get_atlas_list(start_url)
70     for url in atlas_url:
71         save_one_atlas(url)
72 
73 
74 if __name__ == '__main__':
75     start_url = "http://www.mzitu.com/"
76     for count in range(1, 3):
77         url = start_url   "page/"   str(count)  "/"
78         save_one_page(url)
79     print("爬取完成")

该办法传入的参数有3个,第贰个是图形url,第三个当前图片的页数,用作创设文件,第八个是图集名称,在积攒在此之前先创制了二个名称是图集名称的文书夹,这样就能够将图片存入内定文件夹

浅析网页构成如图所示,图集名称包罗在h2标签内,且该标签在全体HTML代码里有唯一的class="main-title",

本条顺序能够爬取图片,可是成效太低,正在学习多进程,希望未来方可升高该程序的爬取功效。

def get_page_name(url):#获得图集最大页数和名称
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    span = soup.findAll('span')
    title = soup.find('h2', class_="main-title")
    return span[10].text, title.text

这里当做测试,所以只爬取前两页图集。退换range内的参数,就能够改动爬取页数。

 

深入分析页面url,发掘每一页均是早先网站 page/ 页数/

 

本文由金沙澳门官网发布于网络编程,转载请注明出处:爬取妹子图

关键词: 金沙澳门官网

上一篇:从零开始
下一篇:没有了