全球主机交流论坛

标题: Py [打印本页]

作者: hdwan.net    时间: 2017-5-17 11:20
标题: Py
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import os
  4. import time


  5. class Spider:
  6.     def __init__(self, base_url):
  7.         self.base_url = base_url

  8.     def run(self):
  9.         for i in range(1, 10000):
  10.             url = '{}/{}'.format(base_url, i)
  11.             html = self.request(url)
  12.             if html:
  13.                 self.parse_html(html, url)
  14.                 time.sleep(1)
  15.             else:
  16.                 time.sleep(0.5)

  17.     def parse_html(self, html, href):
  18.         title = BeautifulSoup(html.text, 'lxml').find('h2', class_='main-title').text
  19.         print('开始保存:{}'.format(title))
  20.         path = str(title)
  21.         self.mkdir(path)
  22.         max_span = BeautifulSoup(html.text, 'lxml').find('div', class_='pagenavi').find_all('span')[-2].text
  23.         for page in range(1, int(max_span) + 1):
  24.             if page == 1:
  25.                 page_url = href
  26.             else:
  27.                 page_url = '{}/{}'.format(href, str(page))
  28.             self.parse_img(page_url, img_name=page)

  29.     def parse_img(self, page_url, img_name):
  30.         img_html = self.request(page_url)
  31.         img_url = BeautifulSoup(img_html.text, 'lxml').find('div', class_='main-image').find('img')['src']
  32.         self.save_img(img_url, img_name)

  33.     def save_img(self, img_url, img_name):
  34.         img = self.request(img_url)
  35.         with open('{}.jpg'.format(img_name), 'ab') as f:
  36.             f.write(img.content)

  37.     def request(self, url):
  38.         headers = {
  39.             'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64)"
  40.                           " AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"
  41.         }
  42.         content = requests.get(url, headers=headers, allow_redirects=False)
  43.         if content.status_code != 200:
  44.             return False
  45.         else:
  46.             return content

  47.     def mkdir(self, path):  # 这个函数创建文件夹
  48.         path = path.strip()
  49.         isExists = os.path.exists(os.path.join("D:\mzitu", path))
  50.         if not isExists:
  51.             print(u'创建', path, u'文件夹')
  52.             os.makedirs(os.path.join("D:\MZITU", path))
  53.             os.chdir(os.path.join("D:\mzitu", path))  # 切换到目录
  54.             return True
  55.         else:
  56.             print(u'名字叫做', path, u'的文件夹已经存在了')
  57.             return False

  58. if __name__ == '__main__':
  59.     base_url = 'http://www.mzitu.com'
  60.     spider = Spider(base_url)
  61.     spider.run()
复制代码

作者: 大猫    时间: 2017-5-17 11:22
大佬 这个是干啥的
作者: tufu001    时间: 2017-5-17 11:23
不明觉厉
作者: janstk    时间: 2017-5-17 11:24
k抓黄图的?yc010t
作者: etotakeo    时间: 2017-5-17 11:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: uuit    时间: 2017-5-17 11:27
python扒图的代码?没学习过python,只能用JS的眼光去看
作者: 小妹妹来吃鸡吧    时间: 2017-5-17 11:29
扒 http://www.mzitu.com上的图片的
作者: 爱纯粹    时间: 2017-5-17 11:32
base_url = 'http://www.mzitu.com'
作者: poropro    时间: 2017-5-17 11:34
PY交易么
作者: phpy    时间: 2017-5-17 12:04
不错不错
作者: orzb    时间: 2017-5-17 12:06
厉害的MJJ




欢迎光临 全球主机交流论坛 (https://sunk.eu.org/) Powered by Discuz! X3.4