python爬取网页文本、图片
从网页爬取文本信息:
eg:从http://computer.swu.edu.cn/s/computer/kxyj2xsky/中爬取讲座信息(讲座时间和讲座名称)
注:如果要爬取的内容是多页的话,网址一定要从第二页开始,因为有的首页和其他页的网址有些区别
代码
- import pymysql
- import requests
- #需要导入模块
- db = pymysql.connect('localhost', 'root', '*********', 'mysql')#第三个是数据库密码,第四个是数据库名称
- print("数据库连接成功!")
- print("---------------------------------------------------")
- r = requests.get("https://python123.io/ws/demo.html")#获取网页源代码
- import re
- def get_text(url):#函数
- r = requests.get(url)
- r.raise_for_status()
- r.encoding = r.apparent_encoding
- return r.text
- def parse_html(url, list):
- demo = get_text(url)
- # 将正则表达式编译成正则表达式对象,方便复用该正则表达式
- # ".*?" :匹配任意字符串
- # [\u4e00-\u9fa5] :匹配中文
- # (\d{}-\d{}-\d{}) : 匹配日期
- #计信院前沿学术报告(2019.7.)</a></li>\[(\d{}-\d{}-\d{})\]
- patern = re.compile('<li><span\sclass="fr">\[(\d{4}-\d{2}-\d{2})\]</span>.*? (.*?)</a></li>', re.S)
- results = re.findall(patern, demo)
- for result in results:
- list.append(result)#向列表添加对象
- return list
- url = 'http://computer.swu.edu.cn/s/computer/kxyj2xsky/index.html'
- list = []
- for i in range(,):
- url = 'http://computer.swu.edu.cn/s/computer/kxyj2xsky/index_'+str(i) + '.html'
- list = parse_html(url, list)
- count =
- for i in list:
- count = count +
- print(i)
- print("一共有"+str(count)+"条数据!")
输出
- 数据库连接成功!
- ---------------------------------------------------
- ('2018-11-20', '计信院前沿学术报告(2018.11-23)')
- ('2018-11-19', '计信院前沿学术报告(2018.11-20)')
- ('2018-11-15', '计信院前沿学术报告(2018.11-22)')
- ('2018-11-12', '计信院前沿学术报告(2018.11-14)')
- ('2018-11-02', '第三届全国形式化方法与应用会议暨形式化专委年会(FMAC 2018)即将开幕')
- ('2018-11-01', '计信院前沿学术报告(2018.11-06)')
- ('2018-10-25', '计信院前沿学术报告(2018.10-31)')
- ('2018-10-17', '计信院前沿学术报告(2018.10-19)')
- ('2018-10-10', '计信院前沿学术报告(2018.10-17)')
- ('2018-09-26', '计信院前沿学术报告(2018.09-29)')
- ('2018-09-12', '计信院前沿学术报告(2018.09-18)')
- ('2018-09-03', '计信院前沿学术报告(2018.09-04)')
- ('2018-07-05', '计信院前沿学术报告(2018.07-05)')
- ('2018-06-28', '计信院前沿学术报告(2018.07-02)')
- ('2018-06-20', '第7届华人学者知识表示与推理学术研讨会')
- ('2018-06-19', '计信院前沿学术报告(2018-06-20)')
- ('2018-05-15', '计信院前沿学术报告(2018-05-16)')
- ('2018-05-07', '计信院前沿学术报告(2018-05-10)')
- ('2018-05-02', '西南大学第三届青年学者含弘科技论坛 计算机与信息科学学院分论坛 学术报告')
- ('2018-04-16', '计信院前沿学术报告(2018-04-23)')
- ('2018-04-09', '计信院前沿学术报告(2018-04-16)')
- ('2018-04-04', '第四届可信软件系统工程(国际)春季学校Spring School on Engineering Trustworthy Software Systems')
- ('2018-04-02', '计信院前沿学术报告(2018-04-08)')
- ('2018-04-02', '计信院前沿学术报告(2018-04-02)')
- ('2018-03-27', '计信院前沿学术报告(2018-03-30)')
- ('2018-01-09', '理论计算机科学2018寒假讲习班')
- ('2018-01-09', '计信院前沿学术报告(2018-01-11)')
- ('2018-01-03', '计信院前沿学术报告(2018-01-05)')
- ('2017-12-27', '出国访学(留学)经验交流')
- ('2017-12-27', '计信院前沿学术报告(2017-12-28)')
- ('2017-12-25', '计信院前沿学术报告(2017-12-28)')
- ('2017-12-18', '出国访学(留学)经验交流')
- ('2017-12-18', '西南大学第二届青年学者含弘科技论坛 计算机与信息科学学院分论坛 学术报告(二)')
- ('2017-12-18', '西南大学第二届青年学者含弘科技论坛 计算机与信息科学学院分论坛 学术报告(一)')
- ('2017-12-15', '计信院前沿学术报告(2017-12-28)')
- ('2017-12-15', '出国访学(留学)经验交流')
- ('2017-12-11', '计信院前沿学术报告(2017-12-13)')
- ('2017-11-28', '计信院前沿学术报告(2017-11-28)')
- ('2017-11-22', 'Third Joint Research Workshop')
- ('2017-11-06', '计信院前沿学术报告(2017-11-11)')
- ('2017-11-06', '计信院前沿学术报告(2017-11-10)')
- ('2017-11-06', '计信院前沿学术报告(2017-11-09)')
- ('2017-10-29', '计信院前沿学术报告(2017-10-30)')
- ('2017-10-25', '计信院前沿学术报告(2017-10-31)')
- ('2017-10-19', '计信院前沿学术报告(2017-10-23)')
- ('2017-10-17', '卑尔根-重庆网络化系统暑期学校')
- ('2017-10-12', '首届“西南大学重要学术成果”候选成果系列报告')
- ('2017-09-18', '出国访学(留学)经验交流')
- ('2017-09-14', '计信院前沿学术报告2017-09-15')
- ('2017-09-06', '出国访学(留学)经验交流')
- ('2017-07-05', '出国访学(留学)经验交流')
- ('2017-06-21', '计信院前沿学术报告(2017-06-27)')
- ('2017-06-21', '计信院前沿学术报告(2017-06-26)')
- ('2017-06-12', '计信院出国访学(留学)经验交流')
- ('2017-05-27', '计信院前沿学术报告(2017-06-02)')
- ('2017-05-24', '计信院学术研讨会(2017-05-28)')
- ('2017-05-24', '计信院前沿学术报告(2017-05-26)')
- ('2017-05-03', '西南大学青年学者含弘科技论坛')
- ('2017-04-13', '可信软件系统工程(国际)春季学校')
- ('2017-04-10', '西南大学计信院前沿学术报告')
- ('2017-03-31', '西南大学计信院前沿学术报告')
- ('2017-03-31', '西南大学教师参加国际学术会议专题报告会')
- ('2017-03-29', '西南大学计信院前沿学术报告')
- ('2017-03-29', '西南大学计信院前沿学术报告')
- ('2017-03-29', '西南大学计信院前沿学术报告')
- ('2017-03-28', '出国访学(留学)经验交流')
- ('2017-03-16', '出国访学(留学)经验交流')
- ('2017-03-15', '出国访学(留学)经验交流')
- ('2017-01-10', '西南大学计信院前沿学术报告')
- ('2017-01-05', '学术讲座')
- ('2017-01-04', '西南大学计信院前沿学术报告')
- ('2016-12-20', '理论计算机科学与形式化方法研讨会')
- ('2016-12-20', '西南大学计信院前沿学术报告')
- ('2016-12-14', '西南大学计信院前沿学术报告')
- ('2016-12-12', '西南大学计信院前沿学术报告')
- 一共有75条数据!
- Process finished with exit code
从网页中爬取图片
eg:从https://maoyan.com/board/4?offset=10中爬取图片,存到位置C:\Users\22725\Desktop\temp
format 格式控制函数 foramt函数更常见的用法其实是str.format()
- 示例:
- >>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
- 'hello world'
- >>> "{0} {1}".format("hello", "world") # 设置指定位置
- 'hello world'
- >>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
- 'world hello world'
代码:
- import pymysql
- import requests
- from hashlib import md5
- import re
- import os
- def get_text(url):
- r = requests.get(url)
- r.raise_for_status()
- r.encoding = r.apparent_encoding
- return r.text
- def parse_html(url, list):
- demo = get_text(url)
- # 将正则表达式编译成正则表达式对象,方便复用该正则表达式
- # ".*?" :匹配任意字符串
- # [\u4e00-\u9fa5] :匹配中文
- # (\d{}-\d{}-\d{}) : 匹配日期
- patern = re.compile('img\sdata-src="(.*?)"\salt', re.S)
- results = re.findall(patern, demo)
- for result in results:
- list.append(result)
- return list
- list = []
- for i in range(,):#左闭右开区间[,)
- url = 'https://maoyan.com/board/4?offset='+str(*i)
- list = parse_html(url, list)
- count =
- for i in list:
- count = count +
- print(i)#输出图片链接
- print("一共有"+str(count)+"条数据!")
- def download_image(url):#保存图片链接
- r = requests.get(url)
- r.raise_for_status()
- save_image(r.content)
- def save_image(content):#下载图片
- file_path = '{0}/{1}.{2}'.format('C:/Users/22725/Desktop/temp', md5(content).hexdigest(), 'jpg')#注意斜杠是/
- #format('文件储存地址',哈希算法随机生成子文件名称,'文件格式')
- if not os.path.exists(file_path):#os.path.exists(file_path)判断文件是否存在,存在返回1,不存在返回0
- with open(file_path, 'wb') as f:
- f.write(content)
- f.close()
- for i in list:
- download_image(i)
- print("下载成功")
输出:
- C:\Users\\PycharmProjects\A\venv\Scripts\python.exe C:/Users//.PyCharmCE2019./config/scratches/scratch.py
- https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/283292171619cdfd5b240c8fd093f1eb255670.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/289f98ceaa8a0ae737d3dc01cd05ab052213631.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/6bea9af4524dfbd0b668eaa7e187c3df767253.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/b607fba7513e7f15eab170aac1e1400d878112.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/da64660f82b98cdc1b8a3804e69609e041108.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/46c29a8b8d8424bdda7715e6fd779c66235684.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/223c3e186db3ab4ea3bb14508c709400427933.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/ba1ed511668402605ed369350ab779d6319397.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/b0d986a8bf89278afbb19f6abaef70f31206570.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/18e3191039d5e71562477659301f04aa61905.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/14a7b337e8063e3ce05a5993ed80176b74208.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/6bc004d57358ee6875faa5e9a1239140128550.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/ae7245920d95c03765fe1615f3a1fe3865785.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/6a964e9cee699267053bd6a4bf6f2671195394.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/43d259ecbcd53e8bbe902632772281d6327525.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/2bbaa395c825920fac397706369746e4300686.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/ad974d3527879f00be2eec29135118163728582.jpg@160w_220h_1e_1c
- https://p0.meituan.net/movie/932bdfbef5be3543e6b136246aeb99b8123736.jpg@160w_220h_1e_1c
- https://p1.meituan.net/movie/aacb9ed2a6601bfe515ef0970add1715623792.jpg@160w_220h_1e_1c
- 一共有20条数据!
- 下载成功
- Process finished with exit code
python爬取网页文本、图片的更多相关文章
- python爬取网页的通用代码框架
python爬取网页的通用代码框架: def getHTMLText(url):#参数code缺省值为‘utf-8’(编码方式) try: r=requests.get(url,timeout=30) ...
- Python爬取网页信息
Python爬取网页信息的步骤 以爬取英文名字网站(https://nameberry.com/)中每个名字的评论内容,包括英文名,用户名,评论的时间和评论的内容为例. 1.确认网址 在浏览器中输入初 ...
- 如何使用python爬取网页动态数据
我们在使用python爬取网页数据的时候,会遇到页面的数据是通过js脚本动态加载的情况,这时候我们就得模拟接口请求信息,根据接口返回结果来获取我们想要的数据. 以某电影网站为例:我们要获取到电影名称以 ...
- 利用Python爬取网页图片
最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片 ...
- Python入门,以及简单爬取网页文本内容
最近痴迷于Python的逻辑控制,还有爬虫的一方面,原本的目标是拷贝老师上课时U盘的数据.后来发现基础知识掌握的并不是很牢固.便去借了一本Python基础和两本爬虫框架的书.便开始了自己的入坑之旅 言 ...
- python爬取网页图片(二)
从一个网页爬取图片已经解决,现在想要把这个用户发的图片全部爬取. 首先:先找到这个用户的发帖页面: http://www.acfun.cn/u/1094623.aspx#page=1 然后从这个页面中 ...
- 使用python爬取P站图片
刚开学时有一段时间周末没事,于是经常在P站的特辑里收图,但是P站加载图片的速度比较感人,觉得自己身为计算机专业,怎么可以做一张张图慢慢下这么low的事,而且这样效率的确也太低了,于是就想写个程序来帮我 ...
- Python爬取养眼图片
1.准备 各位绅士们,你可能会觉得疫情在家无聊,那么现在我们的Python语言可以满足你们的需求.项目需要的工具(1)Python3(2)requests库requests库可以通过代码pip ins ...
- 使用 Python 爬取网页数据
1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...
随机推荐
- Jenkins——持续集成(CI)
Jenkins介绍Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins功能包括:1. ...
- Linux CentOS7 VMware usermod命令、用户密码管理、mkpasswd命令
一. usermod命令 usermod可用来修改用户帐号的各项设定 -c, --comment 注释 GECOS 字段的新值 -d, --home HOME_DIR 用户的新主目录 -e, --ex ...
- u盘装完centos系统恢复
1.使用windows的cmd窗口,执行diskpart命令 2.执行 list disk命令,查看u盘 3.执行 select disk 2,选中u盘,注意,这里的2是我自己的显示,千万不要选错 4 ...
- springboot#父项目
- Backbone.js 历史&文档
历史: 0.1.0版本产生于 ‘— Oct 13, 2010 — Docs’ 文档: https://www.html.cn/doc/backbone/#changelog
- Http服务和JSP
需要先安装tomocat8.0,并且使用的IDEA 一个web项目 新建项目 写代码 // 新建一个class @WebServlet("/test") public class ...
- 小米xiaomi9 google play卡在检查信息
终于在今年淘汰掉用了三年的果6s,换了小米9 ,结果发现科学..上网后,可以正常打开google网页,却无法登陆,gmail也无法使用.一直卡在“正在核对信息”. 检查服务,小米9 全系列自带了谷歌框 ...
- SpringBoot开发环境要求
JDK 截止到目前Spring Boot 的最新版本:2.1.8.RELEASE 要求 JDK 版本在 1.8 以上,所以确保你的电脑已经正确下载安装配置了 JDK(推荐 JDK 1.8 版本). 构 ...
- 使用Spring Cloud Gateway保护反应式微服务(一)
反应式编程是使你的应用程序更高效的一种越来越流行的方式.响应式应用程序异步调用响应,而不是调用资源并等待响应.这使他们可以释放处理能力,仅在必要时执行处理,并且比其他系统更有效地扩展. Java生态系 ...
- 如何利用TableView显示自定义nib中创建的UITableViewCell或子类?
1.创建nib文件 cell.xib 2.在nib中拖一个UITableView出来,设置其reuse Identifier,再根据cell UI需要拖出view摆放好 3.创建ViewControl ...