zoukankan      html  css  js  c++  java
  • python爬虫-爬取你想要的小姐姐

    一、准备

    1. 原地址

    2. 检查html发现,网页是有规则的分页, 最大图片的class为pic-large

    二、代码

     1 import requests
     2 import os
     3 from bs4 import BeautifulSoup
     4 
     5 url = 'http://www.win4000.com/wallpaper_detail_157712.html'
     6 imgmkdir = 'D://Download//ghost_1//'
     7 
     8 
     9 # 获取网页url
    10 def getUrlList():
    11     imgUrlList = []
    12     for i in range(0, 10):
    13         imgUrl = ''
    14         url_split = url.split('.html')
    15         if not i == 0:
    16             imgUrl += url_split[0] + '_' + str(i) + '.html'
    17             # print(imgUrl)
    18             imgUrlList.append(imgUrl)
    19 
    20     return imgUrlList
    21 
    22 
    23 # 下载图片
    24 def downImg(imgUrl):
    25     try:
    26         if not os.path.exists(imgmkdir):
    27             os.mkdir(imgmkdir)
    28         if not os.path.exists(imgUrl):
    29             r = requests.get(imgUrl)
    30             r.raise_for_status()
    31             # 使用with语句可以不用自己手动关闭已经打开的文件流
    32             imgpath = imgmkdir + imgUrl.split('/')[-1]
    33             # 开始写文件, wb表示写二进制文件
    34             with open(imgpath, 'wb') as f:
    35                 f.write(r.content)
    36             print(imgUrl + '【爬取完成】')
    37         else:
    38             print(imgUrl.split('/')[-1] + '【文件已存在】')
    39     except Exception as e:
    40         print("爬取失败" + str(e))
    41 
    42 
    43 # 获取imgHtml标签
    44 def getcontent(soup):
    45     for i in soup.find_all('img', class_='pic-large'):
    46         imgsrc = i['src']
    47         if imgsrc.find('http') >= 0 or imgsrc.find('https') >= 0:
    48             # 下载图片
    49             downImg(imgsrc)
    50 
    51 
    52 # 根据url获取html源码
    53 def getHtmlByUrl(htmlUrl):
    54     htmlText = requests.get(htmlUrl).content
    55     # 使用beautifulSoup解析html
    56     soup = BeautifulSoup(htmlText, 'lxml')
    57 
    58     return soup
    59 
    60 
    61 def main():
    62     htmlUrlList = getUrlList()
    63     for url in htmlUrlList:
    64         htmltext = getHtmlByUrl(url)
    65         getcontent(htmltext)
    66 
    67 
    68 if __name__ == '__main__':
    69     main()

    三、结果

    四、总结

      代码用比较笨的方法来获取,先试水

  • 相关阅读:
    centos6.5下redis的安装与配置
    (函数分治法)实现pow函数(x的y次方幂)
    (数组)大数相乘,相加
    (树)根据排序数组或者排序链表重新构建BST树
    (合并 重叠数组)练习容器的用法
    (动态规划)最小分糖果问题
    (链表)链表的排序问题
    (链表)链表和加法的混合
    (函数)实现strstr函数
    (字符串动态规划)一个字符串变成另一个字符串的步骤数
  • 原文地址:https://www.cnblogs.com/milicool/p/11262684.html
Copyright © 2011-2022 走看看