以爬取海贼王漫画为例
成果图:
话不多逼,开始表演
首先需要的库;
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)
最后有任何不懂的或者可改进的都可发表您的看法