飞道的博客

Python爬取美桌网美女图片

388人阅读  评论(0)

因个人工作需要,想从网上爬一些美女图片当配图,于是搜到了美桌网,在meinvtag***标签下有一些高清美女图片,正符合我的需要,因此写了个简单爬虫下载。

首先观察网站特点。以meinvtag2标签为例,总共有5个页面,类似于http://www.win4000.com/meinvtag2_1.html,最后的数字代表页数,是爬虫最喜欢的url构成,直接可以开5个线程单独处理。在页面html源码中可以提取到每个相册集的url,打开相册集就可以一张张查看所有图片。图片页面的url构成同样简单,类似于http://www.win4000.com/meinv198397_2.html,但是无法获知某个相册集下有多少张图片,我采取的方法是,从1到50循环获取,当获取不到图片时跳出循环。代码如下


  
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import threading
  4. def download_img_from_url(path,url):
  5. with open(path, 'wb') as f:
  6. f.write(requests.get(url).content)
  7. def get_BS(url):
  8. html = requests.get(url)
  9. try:
  10. html.raise_for_status()
  11. return BeautifulSoup(html.text, "lxml")
  12. except:
  13. return None
  14. def download(i):
  15. page_url = page_url_format.format(i)
  16. bs = get_BS(page_url)
  17. lists = bs.find_all( "div",{ 'class': 'tab_box'})
  18. tags = lists[ 1].find_all( 'a')
  19. for tag in tags:
  20. album_url = tag.get( 'href')
  21. album_url = album_url[ 0: -5] + '_'
  22. for id in range( 1, 50):
  23. img_page_url = album_url + str(id) + ".html"
  24. #print(img_page_url)
  25. bs2 = get_BS(img_page_url)
  26. if bs2:
  27. img_url = bs2.find( "img", class_= 'pic-large').get( 'data-original')
  28. name = img_page_url[ 28: -5]
  29. download_img_from_url(save_path.format(name),img_url)
  30. else:
  31. break
  32. page_url_format = 'http://www.win4000.com/meinvtag2_{}.html'
  33. save_path = 'D:\\image\\{}.jpg'
  34. threads = []
  35. for i in range( 1, 6): #直接每一页开一个线程
  36. thread = threading.Thread(target= lambda:download(i))
  37. thread.start()
  38. threads.append(thread)
  39. for thread in threads:
  40. thread.join()

 


转载:https://blog.csdn.net/w632782651/article/details/105632240
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场