Advertisement
Guest User

xhamster_gal.py

a guest
Oct 22nd, 2016
635
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1. import requests
  2. import bs4
  3. import re
  4. import sys
  5.  
  6. def main():
  7.     requests.packages.urllib3.disable_warnings()
  8.     hedr = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0'}
  9.     if len(sys.argv) == 1:
  10.         print 'Argument required'
  11.         return 1
  12.     gal_url = str(sys.argv[1])
  13.     rr = re.findall('http.+xhamster.com/photos/gallery/[0-9]+/(.+).html', gal_url)
  14.     if len(rr) < 1:
  15.         print 'Not xhamster gallery url'
  16.         return 1
  17.     r = requests.get(gal_url, headers = hedr)
  18.     soup = bs4.BeautifulSoup(r.text, 'lxml')
  19.     z = soup.find_all('div', {'class': 'gallery iItem '})
  20.     list_images = list()
  21.     page = 1
  22.     while len(z) > 0:
  23.         print 'Processing page', page
  24.         sys.stdout.flush()
  25.         for divim in z:
  26.             alnk = divim.find('a')
  27.             list_images.append(str(alnk['href']))
  28.         page += 1
  29.         r = requests.get(gal_url+'?page='+str(page), headers = hedr)
  30.         soup = bs4.BeautifulSoup(r.text, 'lxml')
  31.         z = soup.find_all('div', {'class': 'gallery iItem '})
  32.     print 'Found %i images' % len(list_images)
  33.     sys.stdout.flush()
  34.     for i in xrange(len(list_images)):
  35.         print 'Downloading image', i+1,
  36.         sys.stdout.flush()
  37.         try:
  38.             r = requests.get(list_images[i], headers = hedr)
  39.             soup = bs4.BeautifulSoup(r.text, 'lxml')
  40.             z = soup.find('img', {'id': 'imgSized', 'class': 'slideImg'})
  41.             r = requests.get(z['src'], headers = hedr)
  42.             f = open(str(rr[0])+'_'+str(i+1)+'.'+str(z['src'].split('.')[-1]), 'wb')
  43.             f.write(r.content)
  44.             f.close()
  45.         except KeyboardInterrupt:
  46.             raise KeyboardInterrupt
  47.         except:
  48.             print 'Fail:', sys.exc_info()[1]
  49.             continue
  50.         print 'OK'
  51.         sys.stdout.flush()
  52.     return 0
  53.  
  54. if __name__ == '__main__':
  55.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement