爬取某网站图片

这里爬取的目标为jiandan网上的用户分享的随手拍的图片,链接为:http://jandan.net/ooxx

首先,经分析后发现该板块的图片是异步加载的,通过requests库难以获取。因此,利用selenium动态获取目标内容的源代码,再用BeautifulSoup库解析保存即可。

1、首先打开目标链接,煎蛋分析下网站,然后决定用什么方式去获取内容

 

禁止加载JavaScript后,图片则无法显示,并且在XHR里面没有任何内容

基于此,我们发现,该板块内容只有图片是异步加载 的,但图片又是我们想要爬取的,这时用requests库去获取内容的话会比较困难,因此,我们可以用selenium库来获取目标内容。

 

2.selenium简单入门

1)什么是selenium

Selenium 是一个用于浏览器自动化测试的框架,可以用来爬取任何网页上看到的数据。

2)selenium的下载和安装

在终端输入pip install selenium ——> 下载Chromdriver,解压后放在…\Google\Chrome\Application\ ——> 将该目录添加至环境变量

3)使用代码测试

from selenium import webdriver #导入包

driver = webdriver.Chrome()  #打开Chrome浏览器
driver.get('http://www.baidu.com')  #输入url,打开百度首页

如上所示,这段代码可以自动打开百度首页,说明OK

 

 3、开始爬取图片

# 导入必要的包
from selenium import webdriver
from bs4 import BeautifulSoup
import requests

# 打开谷歌浏览器
driver = webdriver.Chrome()
# 输入url,打开煎蛋网首页
driver.get('http://jandan.net')
# 初始化一个引用计数,用于后面的图片简单命名
index = 1

# 定义爬虫方法
def getImage(link_texts):
    # 将index置为全局变量
    global index
    # 通过点击的动作执行翻页
    for i in link_texts:
        # 模拟点击
        driver.find_element_by_link_text(i).click()
        # 解析网页
        html = BeautifulSoup(driver.page_source, 'html.parser')
        # 获取原图的url链接
        links = html.find_all('a', {'class': 'view_img_link'})
        # 遍历当页获得的所有原图链接
        for link in links:
            # 将原图存至当前目录下的jdimg 文件夹,以index命名,后缀名为图片原名的后三位,即jpg或者gif
            with open('jdimg/{}.{}'.format(index, link.get('href')[len(link.get('href'))-3: len(link.get('href'))]), 'wb') as jpg:
                jpg.write(requests.get("http:" + link.get('href')).content)
            print("正在爬取第%s张图片" % index)
            index += 1
# 定义主函数     
def main():
    # 将准备执行的浏览或翻页动作的关键字存入数组
    link_texts = [u'随手拍', u'下一页', u'下一页', u'下一页', u'下一页']
    #开始爬取
    getImage(link_texts)

main()

 

执行后:

 

 打开文件夹jdimg后,可以看到,图片爬取成功:

https://www.cnblogs.com/m-chen/p/10136958.html

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello_world!

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值