全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 4243|回复: 10

Py

[复制链接]
发表于 2017-5-17 11:20:49 | 显示全部楼层 |阅读模式
  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:10 | 显示全部楼层
大佬 这个是干啥的
发表于 2017-5-17 11:23:24 | 显示全部楼层
不明觉厉
发表于 2017-5-17 11:26:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2017-5-17 11:27:19 | 显示全部楼层
python扒图的代码?没学习过python,只能用JS的眼光去看
发表于 2017-5-17 11:29:11 | 显示全部楼层
扒 http://www.mzitu.com上的图片的
发表于 2017-5-17 11:32:36 来自手机 | 显示全部楼层
base_url = 'http://www.mzitu.com'
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-4 15:12 , Processed in 0.063031 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表