V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zuqoid
V2EX  ›  Python

[求助] Python 爬虫爬取豆瓣_请不要害羞,语法没有报错,但是最终没有得到图片,请各位大神帮我看看,到底哪里出现了问题??急求

  •  
  •   zuqoid · 2017-05-12 07:17:08 +08:00 · 3529 次点击
    这是一个创建于 2784 天前的主题,其中的信息可能已经有所发展或是发生改变。
    don't be shy.py

    #coding=utf-8
    import requests #导入 requests 模块
    from bs4 import BeautifulSoup #导入 BeautifulSoup 模块
    import os #导入 os 模块

    class haixiu():

    def __init__(self): #类的初始化操作
    self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0'} #给请求指定一个请求头来模拟 ff 浏览器
    self.web_url = 'http://www.dbmeinv.com/dbgroup/current.htm?gid=haixiuzu' #要访问的网页地址
    self.folder_path = 'D:\haixiu' #设置图片要存放的文件目录

    def get_pic(self):
    print('开始网页 get 请求')
    r = self.request(self.web_url)
    print('开始获取所有 a 标签')
    all_a = BeautifulSoup(r.text, 'lxml').find_all('a', class_='links') #获取网页中的 class 为 links 的所有 a 标签
    print('开始创建文件夹')
    self.mkdir(self.folder_path) #创建文件夹
    print('开始切换文件夹')
    os.chdir(self.folder_path) #切换路径至上面创建的文件夹



    for a in all_a:
    img_str = a['src']
    print('a 标签的 style 内容是:',img_str)
    img_name = a['title']
    self.save_img(img_str, img_name) #调用 save_img 方法来保存图片

    def save_img(self, url, name): ##保存图片
    print('开始请求图片地址,过程会有点长...')
    img = self.request(url)
    file_name = name + '.jpg'
    print('开始保存图片')
    f = open(file_name, 'ab')
    f.write(img.content)
    print(file_name,'图片保存成功!')
    f.close()

    def request(self, url): #返回网页的 response
    r = requests.get(url, headers=self.headers) # 像目标 url 地址发送 get 请求,返回一个 response 对象。有没有 headers 参数都可以。
    return r

    def mkdir(self, path): ##这个函数创建文件夹
    path = path.strip()
    isExists = os.path.exists(path)
    if not isExists:
    print('创建名字叫做', path, '的文件夹')
    os.makedirs(path)
    print('创建成功!')
    else:
    print(path, '文件夹已经存在了,不再创建')

    beauty = haixiu() #创建类的实例
    beauty.get_pic() #执行类中的方法

    (望大神指点,谢谢!!)
    timothyye
        1
    timothyye  
       2017-05-12 08:45:10 +08:00
    缩进全丢了…… 建议代码先放 gist 上,再发链接吧……
    dsg001
        2
    dsg001  
       2017-05-12 21:53:41 +08:00
    粗看抓错标签,应该 find_all('img', class_='height'),推荐用 lxml 的 xpath or cssselect,
    alvinbone88
        3
    alvinbone88  
       2017-05-13 01:50:59 +08:00
    a 标签的 class 属性抓错了,应该是 link 而不是 links
    alvinbone88
        4
    alvinbone88  
       2017-05-13 02:13:58 +08:00
    嘛,刚开始还以为楼主会按照页面里的链接地址一个页面一个页面爬过去的,没想到这个爬虫只能爬那一个页面的所有图片。这样的话可以直接 find_all('img',class_='height_min')。顺便,楼主调用 BeautifulSoup 的语法有点问题,找标签对应的属性应该用 get()方法,用数组会报错。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3020 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:34 · PVG 22:34 · LAX 06:34 · JFK 09:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.