本次小编向大家介绍的是根据用户的需求输入想爬取的内容及页数。
主要步骤:
1.提示用户输入爬取的内容及页码。
2.根据用户输入,获取网址列表。
3.模拟浏览器向服务器发送请求,获取响应。
4.利用xpath方法找到图片的标签。
5.保存数据。
代码用面向过程的形式编写的。
关键字:requests库,xpath,面向过程
现在就来讲解代码书写的过程:
1.导入模块
import parsel # 该模块主要用来将请求后的字符串格式解析成re,xpath,css进行内容的匹配 import requests # 爬虫主要的包 from urllib.request import urlretrieve # 本文用来下载图片 import os # 标准库,本文用来新建文件夹
每个模块的作用都已经备注了。
2.提示用户输入内容和页数
if not os.path.exists("王一博图片"): os.mkdir("王一博图片") # 判断有没有该文件夹,如果没有就创建改文件夹 k = input("请输入你想搜索的关键字:") num = int(input("请输入你想搜索的页数:"))
3.准备好url和header
header = {"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Mobile Safari/537.36" } base_url = "https://www.duitang.com/search/" + k + "&type=feed#!s-p" title_url = [] n = 0
user-agent是服务器识别浏览器的重要参数,我们就用这个来蒙骗服务器,user-agent在浏览器里可以找到
那么现在我们就关注右边
这样header就找到了,注意要以字典的形式
4.发送请求、
for i in range(num): title_url = base_url + str(i) respons = requests.get(title_url, headers=header).text html = parsel.Selector(respons) # 解析数据 -- parsel 转化为Selector对象,Selector对象具有xpath的方法,能够对转化的数据进行处理 pic_url = html.xpath('//div[@class="mbpho"]/a/img/@src').extract()
一切准备就绪后,就可以发送请求了。request.get.text返回的是网页的源代码,然后将源代码转换为Selector对象,再通过xpath的方法找到图片的网址。
xpath的方法可以参考:https://zhuanlan.zhihu.com/p/29436838
5.保存数据
获取图片的图片的链接后,我们就可以保存了。
for url in pic_url: n = n + 1 file_path = "王一博图片" + '/' + str(n)+".jpg" urlretrieve(url, file_path) # 下载图片,具体的用法可以去搜索下,很简单的 print("第%d张图片下载成功" % n)
注意:这里的for循环是在上面的循环里嵌套的。
最后来看看全部的代码吧!
import parsel # 该模块主要用来将请求后的字符串格式解析成re,xpath,css进行内容的匹配 import requests from urllib.request import urlretrieve # 本文用来下载图片 import os # 标准库,本文用来新建文件夹 if not os.path.exists("王一博图片"): os.mkdir("王一博图片") # 判断有没有该文件夹,如果没有就创建改文件夹 k = input("请输入你想搜索的关键字:") num = int(input("请输入你想搜索的页数:")) header = {"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Mobile Safari/537.36" } base_url = "https://www.duitang.com/search/" + k + "&type=feed#!s-p" title_url = [] n = 0 for i in range(num): title_url = base_url + str(i) respons = requests.get(title_url, headers=header).text html = parsel.Selector(respons) pic_url = html.xpath('//div[@class="mbpho"]/a/img/@src').extract() # print(pic_url) for url in pic_url: n = n + 1 file_path = "王一博图片" + '/' + str(n)+".jpg" urlretrieve(url, file_path) # 下载图片,具体的用法可以去搜索下,很简单的 print("第%d张图片下载成功" % n)
来看看运行的结果,以搜索王一博,搜索5页为例。
然后你就发信多了一个王一博的文件夹了,点开就可以看见王一博的帅照了。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]
- 林子祥《单手拍掌》华纳香港版[WAV+CUE][1G]
- 郑秀文.1997-我们的主题曲【华纳】【WAV+CUE】
- 群星.2001-生命因爱动听电影原创音乐AVCD【MEDIA】【WAV+CUE】