python爬取暖享图片

作者: 云胡同学 | 来源:发表于2017-11-24 22:42 被阅读0次
    1. 思路

    目标网页:http://www.axlcg.com/wmxz/1.html

    1. 首先取得第一页每一个图集的url


    可以看到图集的url实在ul class 为homeboy-ul clearfix line-dot底下的li中的a标签里面,所以我们要 一层一层地接近目标。

            allsoup = BeautifulSoup(allurldigit)  # 得到解析后的html
            allpage = allsoup.find('ul', attrs={'class': 'homeboy-ul clearfix line-dot'})
            allpage2 = allpage.find_all('a') #一步找到所有的a标签
            for allpage2index in allpage2:
                allpage3 = allpage2index['href'] #拿到url
                if allpage3 not in allurl: #判断一下是否已经在容器里了,不在的话才加入
                    allurl.append(allpage3) #存到allurl这个list容器里
    
    1. 获取每一页的url
      只获取一页怎么可以叫爬虫呢,我们要的是获取多页。


    可以看到下一页的url就在ul为information-page-ul clearfix底下的一个li中,这时候发现所有的li标签都是相同的,那我们怎么才能找到下一页的url呢?

    下一页的标签中的文字内容写着下一页,因此我们可以判断li中的文本内容是不是下一页,是的话跳到下一页去,爬取下一页的所有图集。

    1. 获取真正想要的img地址

    随便点击一个图集进去,这时候我们可以看到图片的地址了。


    复制一下,验证是否正确。


    发现确实是我们想要的。

    按同样的方法去获得图片的url并放到一个集合里,一个图集里也要跳到下一页的url,获取图片url,因为每一个页面只有一张。

    1. 下载图片到本地
            urllib.request.urlretrieve(m, "D:/Desktop//image/" + str(count) + ".jpg")
    

    第一个参数是img的url,第二个参数是路径+图片的文件名。

    2. 结果

    3. 代码

    # !/usr/bin/env python
    # encoding=utf-8
    
    # python爬取 http://www.axlcg.com/ 暖享
    import requests
    from bs4 import BeautifulSoup
    import urllib.request
    
    allurl = []
    img = []
    count= 0
    
    #伪装成浏览器
    def download_page(url):
        return requests.get(url, headers={
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3236.0 Safari/537.36'
        }).content
    
    
    # 爬取所有图集的url,放到一个list里
    def get_all_url():
        firsturl = "http://www.axlcg.com/wmxz/"
        pageindex = 0
        while 1 and pageindex < 20:
            allurldigit = download_page(firsturl)  # 首页面格式化
            allsoup = BeautifulSoup(allurldigit)  # 得到解析后的html
            allpage = allsoup.find('ul', attrs={'class': 'homeboy-ul clearfix line-dot'})
            allpage2 = allpage.find_all('a')
            for allpage2index in allpage2:
                allpage3 = allpage2index['href']
                if allpage3 not in allurl:
                    allurl.append(allpage3)
            # 找下一页的url
            next_page1 = allsoup.find('ul', attrs={'class': 'information-page-ul clearfix'})
            next_page2 = next_page1.find_all('li')
            for next_page2_index in next_page2:
                # print(next_page2)
                next_page3 = next_page2_index.find('a')
                # print(next_page3)
                if next_page3.getText() == "下一页" and next_page3.get("href") != None:
                    firsturl = next_page3.get("href")
                    pageindex = pageindex + 1
                    print("总页面" + firsturl)
        print(allurl)
        print(len(allurl))
    
    
    # 对每一个url进行下载图片
    def main():
        get_all_url();
        i = 91
        pagecount = 0;  # 最多八页
        index = 0
    
    
        url = download_page(allurl[i])
        soup = BeautifulSoup(url)
        i = i + 1
        while index < 1000 and i < len(allurl):
            # print(allpage)
            # print(soup)
            page0 = soup.find("div", attrs={'class': 'slideBox-detail'})
            # print(page0)
            page = page0.find_all("li")
            # print(page)
            for pageindex in page:
                page2 = pageindex.find("img");
                # print(page2)
                img.append(page2['src'])
            next = soup.find('ul', attrs={'class': 'information-page-ul clearfix'})
            next2 = next.find_all('li')
            for next_url in next2:
                # print(next_url)
                next_page = next_url.find("a")
                if (pagecount < 7 and next_page.getText() == "下一页" and next_page != None and next_page.get("href") != None):
                    # print(next_page.get("href"))
                    url = next_page.get('href')
                    pagecount = pagecount + 1
                    url = download_page(url)
                    soup = BeautifulSoup(url)
                    break;
                elif (pagecount >= 7):
                    url = download_page(allurl[i])
                    soup = BeautifulSoup(url)
                    pagecount = 0
                    print(len(img))
                    download()
                    print("新的页面" + allurl[i])
    
                    i = i + 1
                    break
    def download():
        #print(len(img))
        global img,count
        print("开始下载图片")
        for m in img:
            urllib.request.urlretrieve(m, "D:/Desktop//632/" + str(count) + ".jpg")
            count = count+1
            print("正在下载第"+str(count)+"张")
        img = []
        print("下载完毕")
    
    if __name__ == '__main__':
        main()
        #download();
    

    相关文章

      网友评论

        本文标题:python爬取暖享图片

        本文链接:https://www.haomeiwen.com/subject/hjabvxtx.html