python3爬虫——千库网

x库网还是有反爬的措施的,像异步和弹出登录框,所以我针对只要图片但是对图片的像素没要求的用户。

下面是总结代码,在cmd里面打开进入到pyhton环境后输入就好,括号及里面的文字直接替换就行了,图片的链接参考第四步,在开发者工具中直接双击图片链接就可以复制了。

r = requests.get('http:(图片的链接)')
with open('(图片名字).jpg','wb') as f:
    f.write(r.content)
    f.close()

----------------------------分 割-----------------------------------------

emm...写的比较不规范,因为比较简单就写的随意些;

在网上找到了一张图片,通过requests+BeautifulSoup抓取下来,十分简单的一个操作。

一、安装 requests 和 BeautifulSoup 两个库。

在终端输入“pip install requests”  以及 “pip install BeautifulSoup”,具体的安装步骤以及问题可以在网上找到方法。

 

二、实际操作。

本次操作的环境是cmd终端,没有使用jupyter notebook。

1、首先导入库. 导入os是为了找到文件夹(虽然实际没有用到);

import requests
from bs4 import BeautifulSoup
import os

2、确定我们要抓取的图片的url,通过requests返回一个包含服务器所有资源的Response对象;ps: 在执行完第一条语句之后要确定返回的Response是否有内容,因为现在很多网站都采用ajax异步加载进来的,或者是JS渲染,这时候可以用selenium进行抓取,这里不详细说。反正 print(r.text) 查看一下内容;

r = requests.get('http://588ku.com/ycbeijing/5727640.html')
#print(r.text)
r.raise_for_status()
r.encoding = r.apparent_encoding

3、确定了返回的对象之后,可以使用BeautifulSoup这个库,这个库的作用是可以从HTML或XML文件中提取数据,现在基本都是用BS4。关于BeautifulSoup这个强大的库如何使用,可以查看BeautifulSoup4官方文档

soup = BeautifulSoup(r.text,'html.parser')

4、下面就要看需要抓取的图片在那里,使用Chrome浏览器(其他浏览器也可以,但是建议用Chrome),按下F12或者右键“检查”,就可以打开开发者工具,然后点击开发者工具左上角的鼠标图案,可以快速定位元素在html界面中的位置。

5、确定class的名字,find一下,就可以得到这个图片的链接了;

all_img = soup.find(name = 'img-l-box')
print(all_img)
#输出结果
<div class="img-l-box"><img src="//bpic.588ku.com//back_water_img/18/10/12/14ecf12a60d5e281e42d453e12df9237c0.jpg"/><div class="org-icon"><b>版权商用图<i></i></b></div></div>

6、因为我们只需要抓一张图片,所以我们要获取scr后面的链接,即我们要抓取的图片的“不完全地址”;

img = all_img[0]  #得到<img src="//bpic.588ku.com//back_water_img/18/10/12/14ecf12a60d5e281e42d453e12df9237c0.jpg"/>

src = img['src']  #得到'//bpic.588ku.com//back_water_img/18/10/12/14ecf12a60d5e281e42d453e12df9237c0.jpg'

7、下面构造这个图片的完整链接地址,构造一个http请求,在上面得到的“不完全地址”前加上'http:'头,之后写入到电脑就可以了;

r = requests.get('http://bpic.588ku.com//back_water_img/18/10/12/14ecf12a60d5e281e42d453e12df9237c0.jpg')
with open('tupian.jpg','wb') as f:
    f.write(r.content)
    f.close()

8、最后这样图片就会在终端的默认路径下,如果想要改变路径就需要自己构造,或者通过os库创建,执行mkdir创建文件夹,下面给一个不完整程序;

root = 'E:\images\'
path = root + img_url.split('/')[-1] #去掉/并且取倒数第一个部分,就是图片的不完全地址
try:
    if not op.path.exists(root):
        os.mkdir(root)#创建文件夹

总结,如果针对一张图片,其实不用向第五步这么麻烦,我们直接在开发者工具里面找到图片的这个“不完全地址”,再构造url,加上http的申请头,这样就可以抓取到该图片,大概就下面这几行code;但如果是针对批量抓取,就需要编写构造图片url的代码。

r = requests.get("http:+'不完全地址'")
# 这个案例里面就是
r = requests.get('http://bpic.588ku.com//back_water_img/18/10/12/14ecf12a60d5e281e42d453e12df9237c0.jpg')

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值