Python爬虫示例

#!/usr/bin/env python # -*- coding:utf-8 -*- # 爬取妹子图 # url:http://www.netbian.com/meinv/ # http://www.netbian.com/meinv/index_2.htm import urllib.request import urllib.parse from bs4 import BeautifulSoup import re def main(): # 输入网址得到服务器返回的数据 allurl() # 解析数据得到图片链接和图片名称 # 保存图片到本地,图名做相应修改 # 图片链接格式 findImg = re.compile(r'src="(.*?)"', re.S) # 图片名称格式 findName = re.compile(r"<b>(.*?)</b>", re.S) def findurl(url): """一个网页的爬取(后面用for爬取所有网页)""" # head伪装 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/78.0.3904.108 Safari/537.36" } req = urllib.request.Request(url=url, headers=headers) # 发送信息的预处理 response = urllib.request.urlopen(req) # 得到整个网页 # 读取网页并解码 html = response.read().decode(encoding="gb18030") # 使用'utf-8'无法解码,换为'gb18030' return html def allurl(): """循环爬取所有网页""" for i in range(1000): url = "http://www.netbian.com/meinv/index_" + str(i + 2) + ".htm" html = findurl(url) # 获取一个网页 # print(html) # 测试:是否获取到网页 # 解析数据得到图片链接和图片名称 bs = BeautifulSoup(html, "html.parser") # 将网页解析为树形 t_list = bs.select("li>a") # 找到标签li中的所有子标签a,做成列表 t_list = t_list[-17:-1] # print(t_list) # 测试:当前网页所有妹子图放入列表(每页17个) # 对每个妹子进行正则表达式提取(链接及名称) for item in t_list: item = str(item) # 正则表达式是对字符串操作,所以先转化为字符串 # 提取图片名 name = re.findall(findName, item) # 提取链接,并下载 img = re.findall(findImg, item) savejpg(name, img) def imgurl(url): """获取图片链接下载图片""" # head伪装 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/78.0.3904.108 Safari/537.36" } req = urllib.request.Request(url=url, headers=headers) # 发送信息的预处理 response = urllib.request.urlopen(req) # 得到图片链接 # 二进制形式读取链接 html = response.read() return html def savejpg(name, img): """得到名字和链接存储图片""" # print(name, img) # 测试:输出图名及对应链接 meizi = imgurl(img[0]) # 获取图片链接 with open("D:/ImageResult/{0}.jpg".format(name[0]), "wb") as f: f.write(meizi) if __name__ == "__main__": # 主函数 main()

__EOF__

本文作者艾孜尔江
本文链接https://www.cnblogs.com/ezhar/p/14918111.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   艾孜尔江  阅读(72)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2020-06-22 Windows10应知应会
2020-06-22 VSCode常用设置
点击右上角即可分享
微信分享提示