小心boss 发表于 2019-11-28 16:47

Python爬图源码,小虫子真的可以为所欲为!有福利哦!!!

本帖最后由 小心boss 于 2019-11-28 23:05 编辑

################################################
前段时间开始自学Python,目前处于新手阶段.
试着写了了个爬虫,分享一下.
有没有也在学Python的,共勉!

################################################
老司机的身份被人拆穿了。。。╮( ̄▽ ̄")╭

之前贴的代码好像有点问题,改了下.感谢各位大佬.
有用的话,请个热心.谢谢--2019 11.2822:28






# -*- coding=utf-8 -*-
'''   
人生苦短,我用Python
'''
###以此怀念###
import time
import requests
import re
import lxml
import os
from bs4 import BeautifulSoup
####################################
url = 'https://www.mzitu.com/all'# 需要爬取的网页地址
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0',
         'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
         'Accept-Encoding': 'gzip',
            "Referer": "https://www.mzitu.com/all"
         }    # 创建头部信息
def get(url):      #发送网络请求
    a= requests.get(url,headers=headers)
    html = a.text
    return html

def main():
    soup = BeautifulSoup(get(url),'lxml')       #解析爬取网址
    all_url = soup.find('div',class_='all').find_all('a') #过滤数据到all_url列表中
    for mulu in all_url:    #遍历url列表
      if mulu.get_text() == '早期图片':
            continue
      else:
            result = {
                'title': mulu.get_text(),
                'link': mulu.get('href'),
                'ID': re.findall('\d+', mulu.get('href'))
            }#过滤出字典
      mulu_url = result['link']
      print('读取图帖链接:', mulu_url)
      soup2 = BeautifulSoup(get(mulu_url), 'lxml')    #解析字典中的目录地址
      img_mulu = soup2.find("div", {"class": "main-image"}).find("img")['src']      #匹配图片地址
      page = soup2.find_all("span")      #取图贴页数
      max_page = page.get_text()
      os.chdir(img_dir)
      new_dir(result['title'])
      for j in range(1,int(max_page) + 1):
            next_img_page = mulu_url + '/' + str(j)
            img_html = BeautifulSoup(get(next_img_page), 'lxml')
            #图片链接
            img_url = img_html.find("div", {"class": "main-image"}).find("img")['src']
            #图片名
            img_name = result['title']+str(j)
            # 下载图片
            down(img_name,img_url)
            print('图片地址: ',img_url)
            time.sleep(yanshi)

def down(name,image):
    f = open(name + '.jpg','wb+')
    img = requests.get(image,headers=headers)
    if str(img) == '<Response >':
      print('下载图片...',end='')
      f.write(img.content)
    f.close()

def new_dir(name):#创建文件夹
    if os.path.exists(name):
      print('文件夹已存在')
      os.chdir(name)
    else:
      print('创建文件夹: {}'.format(name))
      os.mkdir(name)
      os.chdir(name)

if __name__ == '__main__':
    img_dir = 'f:\学习资料'# 设定存储爬取图片的路径
    new_dir(img_dir)
    yanshi = 0.5            #设定抓取图片延时(0.5秒)
    main()



#######The End   2019 11.2822:28   ###################

likeme 发表于 2019-12-2 09:50

小心boss 发表于 2019-11-30 14:00
我后面加了断点继续... 要的话,我把代码贴上来.

麻烦你贴一下。

另外,现在这一刻,会出现错误:

读取图帖链接: https://www.mzitu.com/211657
Traceback (most recent call last):
File "mzitu.py", line 85, in <module>
    main()
File "mzitu.py", line 40, in main
    img_mulu = soup2.find("div", {"class": "main-image"}).find("img")['src']      #匹配图片地址
AttributeError: 'NoneType' object has no attribute 'find'

13450774262 发表于 2019-11-28 21:20

小心boss 发表于 2019-11-28 21:11
昨天跑了一晚上,没问题的,你这边报多少什么错

Traceback (most recent call last):
File "D:/desktop/mzitu.py", line 76, in <module>
    main()
File "D:/desktop/mzitu.py", line 49, in main
    down(img_name, img_url)
File "D:/desktop/mzitu.py", line 55, in down
    f = open(name + '.jpg', 'wb+')
FileNotFoundError: No such file or directory: '酒店约会小热巴,真实情境满足你对丝足美腿的幻想1.jpg'
>>>

xqwluo 发表于 2019-11-28 17:00

工程欧巴 发表于 2019-11-28 17:01

支持一下

Patacea 发表于 2019-11-28 17:05

学习学习,支持一下

xqwluo 发表于 2019-11-28 17:05

x_kotaku 发表于 2019-11-28 17:08

卧槽,你爬的什么网站。。。

hgzyyl 发表于 2019-11-28 17:19

学习学习,支持一下

可坏 发表于 2019-11-28 17:22

支持下   哈哈哈哈

修谱诺斯 发表于 2019-11-28 17:30


谢谢分享!

wysheep 发表于 2019-11-28 17:32



执行报错了
页: [1] 2 3 4 5 6 7
查看完整版本: Python爬图源码,小虫子真的可以为所欲为!有福利哦!!!