"’
这篇文章是以Python3.8.1为基础的
用的IDE是PyCharm2019.3.3
用的库有BeautifulSoup4 和 requests
没有的可以先用这两行代码在Win+r中输入cmd的界面中下载
pip install beautifulsoup4
pip install requests
"’
这期我们来讲一下Python爬虫的翻页操作 基础操作链接:CSDN
先随便找一个网站
我这边找了一个表情图片网站
没错还是它,表情包网站
先复习一下上期讲的内容
首先先打开开发者工具,按F5或者是鼠标右键点击检查(还是推荐使用Google浏览器)
打开后点击Network界面,并刷新一下
找到第一个文件点开Headers
这里边我们可以找到本网址的URL(域名),UA(User-Agent用户代理),Status Code(状态码)和Cookies等很多信息
这可以帮助我们更好的爬取网站
我们先找到UA先,将Headers页面拉到最下即可
首先我们先翻页看看
第二页Url
第三页Url
第四页Url
发现了规律没有?
它的规律就是:
http://www.17qq.com/bq-jinguanzhang_{n}.html
好,发现了规律之后,话不多说直接上代码
# 引用前言要下载的库,没有下载的小宝宝赶紧下载,在用PyCharm的可以Alt+Enter自动补全
import requests
from bs4 import BeautifulSoup
找到主网址,和要翻页网址,也就是刚才发现的规律
# 用于补全图片链接
main_url = "http://www.17qq.com"
# 每一页图片的Url的规律
url = "http://www.17qq.com/bq-jinguanzhang_{}.html"
用Network查找用户代理码,每个人是不同的,需要自己实践操作一下
# 利用开发者工具查找用户代理
# 这是因人而异的
headers = {
"User-Agent": "用户代理码"}
# 这是专门为密集恐惧症和强迫症小朋友设计的图片简洁名字对象
count = 1 # 此处可注销
这边需要创造一个列表来存储页码,下一期我们会讲到
# 页码列表
pageNum = []
# 一共有30页,所以我们也要循环30次,由于第一页的规律不符合,因此我们等一下单独做一个 # 第一页就是上一期的
for i in range(2, 30):
# 将页码加入到一个列表里
pageNum.append(i)
这边可能对一起没接触过或刚接触的小朋友有些难度
可以去这个网站:https://www.runoob.com/python/att-string-format.html 菜鸟教程看看,这个网站挺好的
for item in pageNum:
# 将页面数字利用format方法进行填充Url
page_url = url.format(item)
# 用requests中的get方法请求,并生成一个response对象
response = requests.get(url=page_url, headers=headers)
# 用BeautifulSoup进行网页解析,生成一个soup对象
soup = BeautifulSoup(response.text, "html.parser") # 此处必须为response对象的text才能解析
# 查找img标签
links = soup.find_all("img")
这是一个容易出错的地方,需要小心,注意看
# 遍历links对象,得到单一的链接
for link in links:
Gif = link.get("src")
print(Gif)
输出以下
'"
/cache/images/0e26ba73cd3ddc59.jpg
/cache/images/fcc419b4e83f7514.jpg
/cache/images/c05da620fc121b88.jpg
/cache/images/48c58f4953abcc0a.jpg
/cache/images/6b67510cfe75879e.jpg
/cache/images/81e75b95897503b4.jpg
/cache/images/be7ce3d341da1447.jpg
‘’’
发现了吗,这些输出的“链接”是不全的,需要我们用前面的main_url对象做一个字符串的拼接
# 遍历links对象,得到单一的链接
for link in links:
# 由于一些因素,得到的链接不全,要与之前的main_url做一个字符串拼接
Gif = main_url + link.get("src") # 必须要做,不可去掉
print(Gif)
下面的和上一期基本一样,需要在for循环里边,文件夹名字随意,也可以去掉
# 写入文件方法
with open("./新建文件夹/{}.gif".format(count), "wb") as f_w:
Photo = requests.get(url=Gif, headers=headers) # 重新请求链接
f_w.write(Photo.content) # 将请求的链接写入(下载)到一个文件夹内
count += 1 # 防止图片名称重复
这就是这一期全部内容
"'
作者:LIAO_SHI_JIA
时间:2020.2.22 23:05发布
转载请注明出处!本文是本博主辛苦撰写的,侵权必究!
"'
import requests
from bs4 import BeautifulSoup
# 用于补全图片链接
main_url = "http://www.17qq.com"
# 每一页图片的Url的规律
url = "http://www.17qq.com/bq-jinguanzhang_{}.html"
# 利用开发者工具查找用户代理
# 这是因人而异的
headers = {
"User-Agent": "自己的用户代理码"}
count = 1
# 页码列表
pageNum = []
# 一共有30页,所以我们也要循环30次,由于第一页的规律不符合,因此我们等一下单独做一个 # 第一页也就是上一期的那个
for i in range(2, 30):
# 将页码加入到一个列表里
pageNum.append(i)
for item in pageNum:
# 将页面数字利用format方法进行填充Url
page_url = url.format(item)
# 用requests中的get方法请求,并生成一个response对象
response = requests.get(url=page_url, headers=headers)
# 用BeautifulSoup进行网页解析,生成一个soup对象
soup = BeautifulSoup(response.text, "html.parser") # 此处必须为response对象的text才能解析
# 查找img标签
links = soup.find_all("img")
# 遍历links对象,得到单一的链接
for link in links:
# 由于一些因素,得到的链接不全,要与之前的main_url做一个字符串拼接
Gif = main_url + link.get("src") # 必须要做,不可去掉
print(Gif)
with open("./新建文件夹/{}.gif".format(count), "wb") as f_w:
Photo = requests.get(url=Gif, headers=headers) # 重新请求链接
f_w.write(Photo.content) # 将请求的链接写入(下载)到一个文件夹内
count += 1 # 防止图片名称重复