首先在网上找一个图片地址 https://images5.alphacoders.com/899/899831.jpg
import requestssrc = 'https://images5.alphacoders.com/899/899831.jpg'r = requests.get(src)with open('壁纸.jpg', 'wb') as f:f.write(r.content)print('下载完成')
这里的open(文件名,模式)是python的内置函数,用于打开一个文件,接收两个参数,返回一个文件对象。文件对象有write方法,接收二进制数据,可以通过write方法将二进制数据写入File对象对应的文件中,其中filename是要打开的文件的名称,mode是打开文件的方式,mode的取值有如下几种.
| 模式 | 描述 |
|---|---|
| r | 以只读方式打开文件 |
| wb | 以二进制格式打开文件用于读写 |
一般只要有文件的真实地址,所有文件都可以通过requests来下载.
从网站抓取和解析文本,使用自动化的过程从网站收集数据称为Web抓取.
一些网站明确禁止用户使用自动化工具抓取他们的数据,一般是因为向网站的服务器发出许多重复的请求可能会耗尽带宽,减慢其它用户的网站速度,并使服务器过载,从而使网站完全停止相应.
违背网站意愿的网络抓取是一个灰色的领域
下面从单个网页中获取所有HTML代码开始.我们将采用一个仅用于练习的简单页面.
from urllib.request import urlopenurl = 'https://hi.gonghao.me'html_page = urlopen(url)html_text = html_page.read().decode('utf-8')print(html_text)
运行上述代码在控制台显示:
<html><head><title>gongxiaohao</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link href='http://fonts.googleapis.com/css?family=Quicksand:300' rel='stylesheet' type='text/css'><link href="style.css" rel="stylesheet" type="text/css"><link href="favicon.ico" rel="icon" type="image/x-icon"></head><body><div class="container"><h1>Hello</h1><h2>I am evangong</h2><ul><li><a href="http://www.github.com/xiaohaogong"><i class="icon-github"></i><span>GitHub</span></a></li><li><a href="mailto:xiaohaogong@gmail.com"><i class="icon-mail-alt"></i><span>E-mail</span></a></li></ul></div></body></html>
现在我们可以使用 text parsing从网页中抓取特定信息.
from urllib.request import urlopenurl = 'https://hi.gonghao.me'page = urlopen(url)html = page.read().decode('utf-8')start_tag = '<title>'end_tag = '</title>'start_index = html.find(start_tag) + len(start_tag)end_index = html.find(end_tag)print(html[start_index:end_index])
运行会显示.
gongxiaohao
当然,这只适用于一个简单的实例,但是现实世界中的HTML可能要复杂的多,并且更不容易预测. 后面会使用正则表达式用于确定文本是否与特定模式匹配的字符串.
正则表达式不是Python所特有的.它们是一个通用的编程概念,可以与各种编程语言一起使用.正则表达式有自己的语法.
Python3通过重构提供对正则表达式的内置支持.正如Python使用反斜杠作为转义,来使字符格式与其原来意义不同.
比如:
import reprint(re.findall('ab*c', 'ac')) # 输出 ['ac']print(re.findall('ab*c','abc')) # ['abc']print(re.findall('ab*c','abcd')) # ['abc']
我们的正则表达式 ab*c 匹配字符串中开始的任何部分,这些部分以 'a' 结尾.
*号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
.表示,例如 'a.*C' 可用于每个a开始c结尾的字符串,而不用考虑介于两者之间的字母.
print(re.findall('a.*b','aooooooob')) # ['aooooooob']
那么如何应用到网页抓取呢?
import refrom urllib.request import urlopen# <title>Evan Gong</title>url = 'https://gonghao.me'page = urlopen(url)html = page.read().decode('utf-8')pattern = '<title.*?>.*?</title.*?>'match_results = re.search(pattern, html, re.IGNORECASE)title = match_results.group()title = re.sub('<.*?>','',title)print(title)
输出结果是 Evan Gong
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python必备开发工具

三、精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、Python练习题
检查学习结果。

七、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至优快云官方,朋友如果需要可以直接微信扫描下方优快云官方认证二维码免费领取【保证100%免费】。

PythonWeb抓取与正则表达式实践,
2617

被折叠的 条评论
为什么被折叠?



