用Python中BeautifulSoup爬取翻页式网页图片(爬取海贼王漫画)

以爬取海贼王漫画为例

成果图:

在这里插入图片描述

话不多逼,开始表演
首先需要的库;

import request
from bs4 import BeautifulSoup
import urllib.request
import os

爬取网页首先获取网页头文件(让服务器认为我们是以浏览器的身份来访问的)
1.在需要获取头文件的网页按F12

在这里插入图片描述

2.键入ctrl+r后进入以下页面
在这里插入图片描述
3.随便双击其中一个(每个里面显示的头文件是一样的),找到标记处
将其复制

在这里插入图片描述
头文件headers完成(要在左右两边用引号打上才行哦)

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}

第一步:获取网页HTML文本
(r.text如果有乱码的话可以改成r.content)

 url = 'https://one-piece.cn/post/10970/'
 r=reqeusts.get(url)
 html=BeautifulSoup(r.text,'lxml')
 r.encoding=r.apparent_encoding#将编码换成自动合适编码
 print(r.text)

第二步:获取图片链接(首先观察源代码中的图片位置)
可以看出标签递进是由 article>p>img
插入图片描述

'用select获取每一个包含图片地址的标签'
link=html.select('article>p>img')
'再遍历每个标签,获取每个标签里的图片地址'
for i in link:
	 print(i.get('src')   
	

最后用urllib.request.urlretrieve进行下载

  x=0
    for i in link:
        root = "D:\PycharmProjects\pythonProject\海贼王"+'\\'
        name =name
        x=x+1
        urllib.request.urlretrieve(i.get('src'),'{}{}{}.jpg'.format(root,name,x))
        print('第{}张ok'.format(x))

分析两页网页的变化:
在这里插入图片描述

在这里插入图片描述
发现仅仅只有数字变了
所以我们只需稍稍改变网页的URL即可

for i in range(970, 994):
    url = 'https://one-piece.cn/post/10' + str(i) + '/'
    piclink(url)

源代码如下:

import requests
from bs4 import BeautifulSoup
import urllib.request
import os

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}

def piclink(url):
    r=requests.get(url)
    html=BeautifulSoup(r.content,'lxml')
    r.encoding=r.apparent_encoding
    titlename=html.select('article>p>img')
    #获取名称一集的名称
    name=titlename[0].get('alt')
    link=html.select('article>p>img')
    x=0
    for i in link:
        root = "D:\PycharmProjects\pythonProject\海贼王"+'\\'
        name =name
        x=x+1
        urllib.request.urlretrieve(i.get('src'),'{}{}{}.jpg'.format(root,name,x))
        print('第{}张ok'.format(x))

for i in range(970, 994):
    url = 'https://one-piece.cn/post/10' + str(i) + '/'
    piclink(url)


最后有任何不懂的或者可改进的都可发表您的看法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值