一个咸鱼的Python爬虫之路(三):爬取网页图片

学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片。依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图。
所以我找了这个网站http://www.ivsky.com

网站里面有很多的图集,我们就找你的名字这个图集来爬取

http://www.ivsky.com/bizhi/yourname_v39947/

来看看这个页面的源代码:

可以看到我们想抓取的图片信息在<li> 里面然后图片地址在img里面那么我们这里可以用BeautifulSoup库方法来解析网页并抓取图片信息。

soup =BeautifulSoup(html,‘html.parser‘)
    all_img=soup.find_all(‘img‘)
    for img in all_img:
       src=img[‘src‘]

url方面我们用requests库去获取:

def getHtmlurl(url):         #获取网址
    try:
       r=requests.get(url)
       r.raise_for_status()
       r.encoding=r.apparent_encoding
       return r.text
    except:
        return ""

我们要将图片下载下来并存在本地:

       try:                              #创建或判断路径图片是否存在并下载
           if not os.path.exists(root):
               os.mkdir(root)
           if not os.path.exists(path):
               r = requests.get(img_url)
               with open(path, ‘wb‘) as f:
                   f.write(r.content)
                   f.close()
                   print("文件保存成功")
           else:
               print("文件已存在")
       except:
           print("爬取失败")

整个爬虫的框架与思路:

import requests
from bs4 import BeautifulSoup
import os

def getHtmlurl(url):  #获取网址
pass

def getpic(html): #获取图片地址并下载
pass

def main(): 主函数
pass

这里给出完整代码

import requests
from bs4 import BeautifulSoup
import os

def getHtmlurl(url):         #获取网址
    try:
       r=requests.get(url)
       r.raise_for_status()
       r.encoding=r.apparent_encoding
       return r.text
    except:
        return ""

def getpic(html): #获取图片地址并下载
    soup =BeautifulSoup(html,‘html.parser‘)
    all_img=soup.find_all(‘img‘)
    for img in all_img:
       src=img[‘src‘]
       img_url=src
       print (img_url)
       root=‘D:/pic/‘
       path = root + img_url.split(‘/‘)[-1]
       try:                              #创建或判断路径图片是否存在并下载
           if not os.path.exists(root):
               os.mkdir(root)
           if not os.path.exists(path):
               r = requests.get(img_url)
               with open(path, ‘wb‘) as f:
                   f.write(r.content)
                   f.close()
                   print("文件保存成功")
           else:
               print("文件已存在")
       except:
           print("爬取失败")

def main():
    url=‘http://www.ivsky.com/bizhi/yourname_v39947/‘
    html=(getHtmlurl(url))

    print(getpic(html))
main()

运行代码:

我们可以看到图片都保存在本地了

这就是简单的实战案列,大家可以自己试试。

时间: 2024-10-13 07:43:42

一个咸鱼的Python爬虫之路(三):爬取网页图片的相关文章

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

介绍一下scrapy 爬虫框架 安装方法 pip install scrapy 就可以实现安装了.我自己用anaconda 命令为conda install scrapy. 1 Engine从Spider处获得爬取请求(Request)2Engine将爬取请求转发给Scheduler,用于调度 3 Engine从Scheduler处获得下一个要爬取的请求4 Engine将爬取请求通过中间件发送给Downloader5 爬取网页后,Downloader形成响应(Response)通过中间件发给En

一个咸鱼的Python爬虫之路(一):requests库

作为一个咸鱼大学打了3年游戏才幡然醒悟,现在开始学点东西,这里记录下自己的所学. urllib库之前有些了解就不写了,从requests 库开始吧(ˉ▽ ̄-) . 首先要说的是一定要用好官方文档:http://docs.python-requests.org/en/master/ 先来看个列子吧: 下面介绍requests库的几种基本用法: 具体代码略过参考官方文档练习就好,这里面get是最常用的方法. response对象包含了服务器返回的所有信息,也包含了requests的请求信息. 属性

python爬虫01-使用urllib爬取网页

1 import urllib.request # 导入模块 2 import urllib.parse 3 4 # 将网页赋给变量file 5 file = urllib.request.urlopen("http://www.baidu.com") 6 7 # 读取网页 8 data = file.read() # 读取全部内容,结果作为一个字符串变量 9 dataline = file.readline() # 读取一行的内容 10 datalines = file.readli

一个咸鱼的Python爬虫之路(四):将爬取数据存入mysql

Python 与 mysql 数据连接 用pymysql import pymysql conn =pymysql.connect(host='127.0.0.1',user='root',password='123456',db='company',charset="utf8") cur=conn.cursor() sql=''' ''' employee=cur.execute(sql) conn.commit() cur.close() conn.close() 基本操作大概就这

Python爬虫实战二之爬取百度贴吧帖子

大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不好使,八成是正则表达式那儿匹配不到了,请更改一下正则,当然最主要的还是帮助大家理解思路. 2016/12/2 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:ht

转 Python爬虫实战二之爬取百度贴吧帖子

静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件

Python爬虫新手教程:爬取了6574篇文章,告诉你产品经理在看什么!

作为互联网界的两个对立的物种,产品汪与程序猿似乎就像一对天生的死对头:但是在产品开发链条上紧密合作的双方,只有通力合作,才能更好地推动项目发展.那么产品经理平日里面都在看那些文章呢?我们程序猿该如何投其所好呢?我爬取了人人都是产品经理栏目下的所有文章,看看产品经理都喜欢看什么. 1. 分析背景 1.1. 为什么选择「人人都是产品经理」 人人都是产品经理是以产品经理.运营为核心的学习.交流.分享平台,集媒体.培训.招聘.社群为一体,全方位服务产品人和运营人,成立8年举办在线讲座500+期,线下分享

Python 爬虫入门实例(爬取小米应用商店的top应用apk)

一,爬虫是什么? 爬虫就是获取网络上各种资源,数据的一种工具.具体的可以自行百度. 二,如何写简单爬虫 1,获取网页内容 可以通过 Python(3.x) 自带的 urllib,来实现网页内容的下载.实现起来很简单 import urllib.request url="http://www.baidu.com" response=urllib.request.urlopen(url) html_content=response.read() 还可以使用三方库 requests ,实现起

Python爬虫之利用正则表达式爬取内涵吧

首先,我们来看一下,爬虫前基本的知识点概括 一. match()方法: 这个方法会从字符串的开头去匹配(也可以指定开始的位置),如果在开始没有找到,立即返回None,匹配到一个结果,就不再匹配. 我们可以指定开始的位置的索引是3,范围是3-10,那么python将从第4个字符'1'开始匹配,只匹配一个结果. group()获得一个或多个分组的字符串,指定多个字符串时将以元组的形式返回,group(0)代表整个匹配的字串,不填写参数时,group()返回的是group(0). 1 import r