建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

冰凝绝-卫庄

角色:副盟主/导师

话题:3

发消息
发表于2020年08月09日 18:51:31 9585
直达本楼层的链接
楼主
显示全部楼层
[编程语言] Python语法小白进阶爬虫实战(2)

     上一篇文章我给大家讲了爬虫的核心步骤——文件下载,这篇文章给大家讲讲用正则表达式批量获取html页面文本信息。

     这里的话可能大家就有点头疼正则表达式了,因为好多东西要背一下才能流畅使用,不然都看不懂的那种感觉,但其实没那么困难,今天只教大家一个,看懂了就能用,至于那些细致的正则可以在往后慢慢学习加精


     这次的任务目标在于批量获取一个html网页中的文本数据,可以是一些资源链接地址,也可以是一些文字信息,数据过滤主要用到了“re”库,这次的操作同样需要大家记小点东西,不难,也不多,大家放轻松学就可以


     为方便大家理解操作过程,我就用一个网站页面给大家演示。我们先打开这个链接http://www.whaledu.com/classroom/30/courses ,然后会看到一栏一栏的课程,我们这次的任务就是把这些课程的标题文字都爬取下来,还是先写好一部分代码,

import requests

url = 
response = requests.get(url)
html = response.text		#大家可以尝试省去这句直接print(response)看看区别
print(html)


        关键语句写出来后我们添加上网址,看看运行结果

mport requests

url = 'http://www.whaledu.com/classroom/30/courses'
response = requests.get(url)
html = response.text
print(html)

        此时我们就看到了html的内容,现在就需要用到re这个库来筛出我们所需要的数据了,依旧先写出大体框架

import re
import requests

url = 'http://www.whaledu.com/classroom/30/courses'
response = requests.get(url)
html = response.text
#print(html)

pattern = re.compile('', re.S)		#单引号里面是我们即将添加的内容,用来过滤字符串
items = re.findall(pattern, html)
print(items)


         然后打开页面http://www.whaledu.com/classroom/30/courses 在浏览器里面用调试器定位我们需要获取的字符串,此时这些课程名称就是我们要爬取的目标

20200809_184427.png

IMG_202008222_184437886.png

          注意看目标字符串前后html标签,再对比添加正则表达式后的程序

import re
import requests

url = 'http://www.whaledu.com/classroom/30/courses'
response = requests.get(url)
html = response.text
#print(html)

pattern= re.compile('.*?<div class="media-body">.*?<div class="title">.*?<a href=".*?>(.*?)</a>'
, re.S)		#新添加的正则表达式
items = re.findall(pattern, html)
print(items)

        这里“.*?”就是匹配所有字符(包括换行、空格、特殊字符),而形如“<div class="media-body">”这样的明文字符串能匹配的数据也就只有它本身了,起到了为获取目标数据缩小匹配范围的作用,整个正则表达式句子中小括号代表的就是要提取的字符串,如果有需要可以使用多个小括号匹配多个字符串,运行结果如下

20200809_184722.png

       可以看到程序已经筛选出了我们所需要的课程名称,但名称前后还有一些我们不需要的字符,那我们只需要把这些不需要的字符放到括号外面用来定位即可

20200809_184839.png

   多余的字符已经没有了,可以看出任务是已经完成了!


  下篇文章继续讲解这些数据的补充以及最后的整理!


举报
分享

分享文章到朋友圈

分享文章到微博

Sweet_azure

角色:成员

话题:0

发消息
发表于2020年09月19日 12:50:52
直达本楼层的链接
沙发
显示全部楼层

感谢分享

点赞 评论 引用 举报

踩了牛奶的猫

角色:成员

话题:0

发消息
发表于2020年09月19日 12:56:21
直达本楼层的链接
板凳
显示全部楼层

说的很详细,赞

点赞 评论 引用 举报

校长是我

角色:成员

话题:0

发消息
发表于2020年09月28日 19:35:41
直达本楼层的链接
地板
显示全部楼层

写的真好!

点赞 评论 引用 举报

回眸浅笑

角色:成员

话题:0

发消息
发表于2020年10月02日 10:57:30
直达本楼层的链接
5#
显示全部楼层

正准备学习爬虫,太好了!

点赞 评论 引用 举报

半城风云

角色:成员

话题:0

发消息
发表于2020年10月18日 14:40:14
直达本楼层的链接
6#
显示全部楼层

不错

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册