在能够获取到网页内容之后,发现内容很多,那么下一步要做信息的筛选,就和之前的筛选图片那样

而在python中可以通过正则表达式去筛选自己想要的数据

1.首先分析页面内容信息,确定正则表达式。例如想获取下面这些内容的链接

可以通过筛选出符合<li><a href="xxx"的内容,获取到href中的链接,设置正则:reg = r'<li><a href="(.+?)"'去筛选数据就OK了;

2.在python中用正则表达式去筛选数据,在python中有两种方法实现:

第一种:

reg = r'<li><a href="(.+?)"'
hrefreg = re.compile(reg)
hreflist = hrefreg.findall(html)

第二种:

reg = r'<li><a href="(.+?)"'
hreflist = re.findall(reg, html)

这两种方法都能实现数据的筛选,他们的区别主要是:是否使用re.compile()。这个实际影响到的是大数据量级时的性能,目前仅作了解。

另外,关于正则学习的内容可以参考这里:https://www.runoob.com/regexp/regexp-tutorial.html

最后是简单的筛选href内容的代码和结果,结果里看出有些href内容并不是http链接,这个时候可以做二次处理。例如,判断是否包含"http"字符串等:

import re
import urllib.request # 设置headers和URL
url = "https://news.baidu.com/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = urllib.request.Request(url=url, headers=headers) # 请求指定URL,获取内容
html = urllib.request.urlopen(req).read().decode('UTF-8', 'ignore') #筛选出href内容并打印
reg = r'<li><a href="(.+?)"'
hreflist = re.findall(reg, html)
for href in hreflist:
print(href)

【Python学习笔记四】获取html内容之后,如何提取信息:使用正则表达式筛选的更多相关文章

  1. 大学四年的Python学习笔记分享之一,内容整理的比较多与仔细

    翻到以前在大学坚持记录的Python学习笔记,花了一天的时间整理出来,整理时不经回忆起大学的时光,一眨眼几年就过去了,现在还在上学的你们,一定要珍惜现在,有个充实的校园生活.希望这次的分享对于你们有学 ...

  2. Python学习笔记四:面向对象编程

    一:定义类并创建实例 Python中定义类,通过class关键字,类名开头大写,参数列表为所继承的父类.如果没有需要明确继承的类,则继承object. 使用类来创建对象,只需 类名+() 形式即可,p ...

  3. Python学习笔记(四)Python函数的参数

    Python的函数除了正常使用的必选参数外,还可以使用默认参数.可变参数和关键字参数. 默认参数 基本使用 默认参数就是可以给特定的参数设置一个默认值,调用函数时,有默认值得参数可以不进行赋值,如: ...

  4. python学习笔记(四) 思考和准备

    一.zip的坑 zip()函数接收多个可迭代数列,将数列中的元素重新组合,在3.0中返回迭代器指向 数列首地址,在3.0以下版本返回List类型的列表数列.我用的是3.5版本python, 所以zip ...

  5. python学习笔记四 迭代器,生成器,装饰器(基础篇)

    迭代器 __iter__方法返回一个迭代器,它是具有__next__方法的对象.在调用__next__方法时,迭代器会返回它的下一个值,若__next__方法调用迭代器 没有值返回,就会引发一个Sto ...

  6. Python学习笔记四--字典与集合

    字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={ ...

  7. Python学习笔记四

    一.装饰器 1.知识储备 函数对象 函数可以被引用 函数可以当参数传递 返回值可以是函数 可以当作容器的元素 def func1(): print (666) def func2(): print ( ...

  8. python学习笔记(四)、条件、循环及其他语句

    1 再谈print和import 1.1 打印多个参数 print 能够同时打印多个表达式,并且能自定义分隔符.如下: print('a','b','c') ——> a b c print('a ...

  9. Python学习笔记_获取当前目录和上级目录

    实验目标:获取当前目录和上级目录 系统环境: 1.OS:Win10 64位 2.Pythoh 3.7 3.实验路径:C:\Work\Python\MergeExcel 代码参考: # -*- codi ...

随机推荐

  1. Spring Boot 分离资源文件打包

    Spring Boot项目默认的会打包成单一的jar文件,但是有时候我们并不想让配置文件.依赖包都跟可执行文件打包到一起.这时候可以在pom.xml文件中进行配置,从而使资源文件.依赖包和可执行文件分 ...

  2. docsify 如何写博客

    1. 安装node 下载安装即可: https://nodejs.org/zh-cn/ 下载文件: https://nodejs.org/dist/v12.16.1/node-v12.16.1-x64 ...

  3. Haproxy/LVS负载均衡实现+keepalived实现高可用

    haproxy+keepalived 集群高可用集群转发 环境介绍 #内核版本 Ubuntu 18.04.4 LTS \n \l 107-Ubuntu SMP Thu Jun 4 11:27:52 U ...

  4. python+opencv图像增强——拉普拉斯

    img = cv2.imread(r'F:\python\work\cv_learn\clipboard.png',1) cv2.imshow('input',img) kernel = np.arr ...

  5. onunload对应的js代码为什么不能执行?和onbeforeunload的区别?

    为什么onunload对应的js代码不能执行? 为什么onbeforeunload才可以在离开页面时执行相应的js代码? 1.onunload和onbeforeunload都是在离开页面或者刷新页面的 ...

  6. java使字符串的数字加一

    /** * 字符串+1方法,该方法将其结尾的整数+1,适用于任何以整数结尾的字符串,不限格式,不限分隔符. * @author zxcvbnmzb * @param testStr 要+1的字符串 * ...

  7. eclipse 导入下载或拷贝的java Web项目时报错 ,或者是报错Unbound classpath container: 'JRE System Library

    在Problems里报错Description Resource Path Location Type Unbound classpath container: 'JRE System Library ...

  8. 使用selenium抓取淘宝信息并存储mongodb

    selenium模块 简单小例子 Author:song import pyquery from selenium import webdriver from selenium.common.exce ...

  9. 【k8s学习笔记】使用 kubeadm 部署 v1.18.5 版本 Kubernetes集群

    说明 本文系搭建kubernetes v1.18.5 集群笔记,使用三台虚拟机作为 CentOS 测试机,安装kubeadm.kubelet.kubectl均使用yum安装,网络组件选用的是 flan ...

  10. yml配置基本使用

    1.yml 基本知识 1.1 常识 基本结构 k: v 的结构 注意:冒号和v之间必须有空格,否则会出现问题: 大小写敏感 1.2 v 多种写法 看一下下面的这个例子: # rabbitmq 初始化配 ...