Python爬虫功能(爬取网页图片)

news/2024/7/19 11:25:24 标签: 爬虫, python, 开发工具

  周五跟着虫师的博客学习了一下Python爬虫(爬取网页图片),然后到下班还没运行起来,后面请教博客底下留言板里的童鞋,是因为版本问题导致,虫师用的2.7版本,我用的是版本3,后面照着热心的网友写的修改了一下,本以为会好,然后还是没能跑起来,最终在周六的晚上在我同事的耐心指导下,由于几个空格问题,终于给运行成功了……(注:原谅小白由于各种语法,空格不熟悉等问题造成的这种低级错误),所以就想写进博客方便以后自己查看和更好的帮助其他跟我一样刚学习的Python的同学。


版本:Python3
开发工具:pycharm 
注:如果是使用Python2的童鞋可以借鉴测试大牛虫师的博客:  http://www.cnblogs.com/fnng/p/3576154.html#comment_tip
import urllib.request
import re
import chardet

def getHtml(url):
    page=urllib.request.urlopen(url)
    html =page.read()
    return html
def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre=re.compile(reg)
    encode_type=chardet.detect(html)
    html=html.decode(encode_type['encoding'])
    imglist=re.findall(imgre,html)
    x=0
    for imgurl in imglist:
        urllib.request.urlretrieve(imgurl,'%s.jpg' %x)
        x+=1
    return imglist
html=getHtml("http://tieba.baidu.com/p/2460150866")
print(getImg(html))
一、导入模块说明
urllib.request:获取web页面数据 re:正则表达式模块,用于后面代码中提取图片数据 chardet:用来识别编码模块
二、函数说明
第一个getHTML函数用于获取web数据。
urllib.open()方法用于打开一个URL地址;
read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。执行程序就会把整个网页打印输出。
返回一个html。
第二个getImg函数用于在获取的整个页面中筛选需要的图片连接。
reg正则表达式用于提取网页中包含.jpg的图片
re.compile 将正则表达式转换为模式对象,可以实现更有效率的匹配
chardet用来识别编码,encode方法再将此编码转换成字符串
re.findall() 方法读取html 中包含 imgre(正则表达式)的数据。
第三个for循环用于获取网页中的图片。
for循环对获取的图片连接进行遍历,为了使图片的文件名看上去更规范,对其进行重命名,命名规则通过x变量加1。
urllib.urlretrieve()方法,直接将远程数据下载到本地,保存的位置默认为程序的存放目录
程序运行完成,将在存在程序目录下看到下载到本地的文件。

希望能对大家有帮助~~~

 

转载于:https://www.cnblogs.com/yzq07231012/p/7786645.html


http://www.niftyadmin.cn/n/1472505.html

相关文章

App 常用的支付方式。

App 常用的支付方式。 转载于:https://www.cnblogs.com/songchunmin/p/7789901.html

请求跨域处理

在web.config 配置文件增加以下节点配置信息&#xff1a;<!--支持跨域--><system.webServer><httpProtocol><customHeaders>     <!-- 指定请求的方式 --><add name"Access-Control-Allow-Methods" value"OPTIONS,POST,G…

模块总结-二维码生成模块

qrcode 模块可以便捷地生成二维码&#xff0c;只是生成的二维码图像大小无法编辑。 1 import qrcode2 qr qrcode.QRCode(3 version1,4 error_correctionqrcode.constants.ERROR_CORRECT_L,5 box_size100,6 border4,7 ) 8 qr.add_data(hello, qrcode) ##二维码增添的数据9 qr.m…

团队项目-第七次scrum 会议

时间&#xff1a;11.3 时长&#xff1a;30分钟 地点&#xff1a;F楼1039教室工作情况 团队成员已完成任务待完成任务解小锐学习cocos creator样例修复员工招聘时bug陈鑫完成fire()与UI的对接实现雇佣与解雇功能的界面与脚本李金奇修复对接中的bug完成存档和读取功能王辰昱实现雇…

C#委托事件随笔

//用户去银行取钱&#xff08;发布方&#xff09;&#xff0c;用户收到短信提醒&#xff0c;&#xff08;接收方&#xff09;class Program{static void Main(string[] args){Bank b new Bank();                      //实例化银行User xm new User(&…

SearchSploit

在我们的GitHub上的Exploit Database存储库中包含一个名为"searchsploit"的Exploit-DB的命令行搜索工具&#xff0c;该工具还允许您在任何地方随身携带一个Exploit Database的副本。SearchSploit使您可以通过本地签出的存储库副本执行详细的脱机搜索。这种能力对于没…

go语言的排序、结构体排序

原文&#xff1a;https://studygolang.com/articles/1598 晚上准备动手写点 go 的程序的时候&#xff0c;想起 go 如何排序的问题。排序 sort 是个基本的操作&#xff0c;当然搜索 search 也是。c 提供一个 qsort 和 bsearch&#xff0c;一个快排一个二分查找&#xff0c;不过是…

asp.net mvc model attribute and razor and form and jquery validate 完美结合

1.创建Model&#xff0c;添加标注。 [Serializable] public class BaseUserModel:BaseModel { [StringLength(100)] [Required(ErrorMessage "User Name can not be empty")] public string UserName { get; set; } } 2.controller中action传Model到razor页面 publi…