《Python 网络数据采集》正则表达式

Python网络数据采集——正则表达式 计算机科学里曾经有个笑话:“如果你有一个问题打算用正则表达式(regular expression,通常简写regex)来解决,那么就是两个问题了。” regex——你值得拥有! 学正则表达式不一定只会用在爬虫,当然爬虫也未必会用到正则表达式(能找到捷径就不需要啊),学正则可以处理一些杂乱的文本,从杂乱的信息中找出些许规律性并批量过滤出自己想要的东东。可 阅读详情

  • 如果你用过 Python 2.x 里的 urllib2 库,可能会发现 urllib2 与 urllib 有些不同。在 Python 3.x 里,urllib2改名为 urllib,被分成一些子模块: urllib.request 、urllib.parse 和 urllib.error 。尽管函数名称大多和原来一样,但是在用新的 urllib 库时需要注意哪些函数被移动到子模块里了。

     urlopen 用来大家并读取一个从网络获取的远程对象。

from urllib.request  import u rlopen
html = urlopen("http://pythonscraping.com/pages/page1.html")
print(html.read())
  • BeautifulSoup通过定位 HTML 标签来格式化和组织复杂的网络信息,用简单易用的 Python 对象为我们展现 XML 结构信息。
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

def getTitle(url):
    try:
        html = urlopen(url)
    except HTTPError as e:
        print(e)
        return None
    try:
        bsObj = BeautifulSoup(html.read(), "lxml")
        title = bsObj.body.h1
    except AttributeError as e:
        print(e)
        return None
    return title

title = getTitle("http://pythonscraping.com/pages/page1.html")
if title == None:
    print("Title could not be found!")
else:
    print(title)
  • 复杂的HTML解析
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

try:
    html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html")
except HTTPError as e:
    print(e)

try:
    bsObj = BeautifulSoup(html, "lxml")
except AttributeError as e:
    print(e)

namelist = bsObj.findAll("span", {"class":"green"})
for name in namelist:
    print(name.get_text())
  • findAll()和find()

        findAll(tag, attributes, recursive, text, limit, keywords)

        find(tag, attributes, recursive, text, keywords)

        tag::传一个标签名称或多个标签组成的列表

        attributes:传一个Python字典封装一个标签的若干属性和属性值。例如:.findAll("span", {"class":{"green", "red"}})

        recursive:是一个递归参数,要求传一个布尔变量,默认值是Ture,所以findAll默认会去查找标签参数的所有子标签,以及子标签的子标签。改为False,findAll就至查找文档的以及标签。

        text:用标签的文本内容去匹配,而不是标签的属性。

        limit:范围限制参数,显然只用于findAll,find其实等价与findAll中的limit=1的情况。limit参数设置后,它的返回的前limit项结果是按照网页上的顺序排序的。

        keyword:可以让你选择指定属性的标签,是BeautifulSoup设置的一个冗余功能,可替代,且偶尔会出现问题。例如bsObj.findAll(class="green"),会产生一个语法错误,因为class是Python的保留字。

  • get_text()

        .get_text() 会把你正在处理的 HTML 文档中所有的标签都清除,然后返回一个只包含文字的字符串。假如你正在处理一个包含许多超链接、段落和标签的大段源代码,那么 .get_text() 会把这些超链接、段落和标签都清除掉,只剩下一串不带标签的文字。

  • 导航树
  • 子标签和后代标签
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

try:
    html = urlopen("http://www.pythonscraping.com/pages/page3.html")
except HTTPError as e:
    print(e)

try:
    bsObj = BeautifulSoup(html, "lxml")
except AttributeError as e:
    print(e)

for child in bsObj.find("table", {"id":"giftList"}).children:
    print(child)
  • 处理兄弟标签
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

try:
    html = urlopen("http://www.pythonscraping.com/pages/page3.html")
except HTTPError as e:
    print(e)

try:
    bsObj = BeautifulSoup(html, "lxml")
except AttributeError as e:
    print(e)

for sibling in bsObj.find("table", {"id":"giftList"}).tr.next_siblings:
    print(sibling)
  • 父标签处理
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

try:
    html = urlopen("http://www.pythonscraping.com/pages/page3.html")
except HTTPError as e:
    print(e)

try:
    bsObj = BeautifulSoup(html, "lxml")
except AttributeError as e:
    print(e)

print(bsObj.find("img", {"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text())
  • 正则表达式

邮箱:[A-Za-z0-9\._+]+@[A-Za-z]+\.(com|org|edu|net)


from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
import re

try:
    html = urlopen("http://www.pythonscraping.com/pages/page3.html")
except HTTPError as e:
    print(e)

try:
    bsObj = BeautifulSoup(html, "lxml")
except AttributeError as e:
    print(e)

images = bsObj.findAll("img", {"src":re.compile("\.\.\/img\/gifts\/img.*\.jpg")})
for img in images:
    print(img["src"])
  • 获取属性
  • 对于一个标签可以用myTag.attrs获取所有属性
  • myTag.attrs["src"]表示myTag的src的属性
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
import re

try:
    html = urlopen("http://www.pythonscraping.com/pages/page3.html")
except HTTPError as e:
    print(e)

try:
    bsObj = BeautifulSoup(html, "lxml")
except AttributeError as e:
    print(e)

images = bsObj.findAll("img", {"src":re.compile("\.\.\/img\/gifts\/img.*\.jpg")})
for img in images:
    print(img.attrs["src"])


        
python网络数据采集学习笔记(三) 第二篇学习笔记的链接为:https://blog.youkuaiyun.com/Nyte2018/article/details/88761489 这一篇是接上次关于第二章的学习 1、标签处理 先来看下面代码1: from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("http://www.pythons... 阅读详情

相关推荐

【基金量化研究系列】基金绩效归因模型——Brinson多期归因模型

文章目录1. 引言2. Brinson单期归因模型2.1 模型框架2.2 公式推导3. Brinson多期归因模型3.1 模型框架3.2 公式推导4. Brinson模型的应用场景4.1 基金组合归因4.2 基金经理能力刻画4.3 大类资产配置应用5. 模型的实现与实证案例研究写在最后 1. 引言 在 2. Brinson单期归因模型 2.1 模型框架 wp wb rp 组合收益:wp rp 择股收益:wb rp rb 择时收益:wp rb 基准收益:wb rb 2.2 公式推

Mikey_Sun的博客 1万+

python正则表达式之断言

一、肯定断言 1.1.前向肯定断言 前向肯定断言:表示你希望匹配的字符串前面是pattern匹配的内容时,才匹配。 语法:(?<=pattern) 1.2.后向肯定断言 后向肯定断言:表示你希望匹配的字符串的后面是pattern匹配的内容时,才匹配 语法:(?=pattern) 1.3.肯定断言说明 1、如果在一次匹配过程中,需要同时用到前向肯定断言和后向肯定断言时,那你必须将前向肯定断言表达式写在要匹配的正则表达式的前面,而后向肯定断言表达式写在你要匹配的字符串的后面,表示后向肯定模式之后,前向肯定

chenchen- 1642

ADI DSP开发环境(CCES)下的程序烧录问题(以ADSP-SC589为例)

在CCES环境下将程序烧录到flash主要有两种方式。首先在对项目编译产生文件的属性设置为Release。 在编译完成后,找到每个CORE单独生成的DXE文件: 文件通常位于项目目录下每个core的Release文件中。安装SC589评估板的驱动(ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.0.exe)后,在安装目录下可以找到SPI FLASH芯片的驱动程序(sc589_w25q128fv_dpia_Core1.dxe): 把文件copy到CCES 的目录下由于SC58x处理器的特殊性

daijingxin的博客 3730

Python网络数据采集

通过本文的介绍,相信读者对如何编写爬虫代码有了更深入的了解。当然,爬虫技术不是万能的,需要遵守相关的法规和道德准则。在实际应用中,爬虫的使用需要考虑到数据的可靠性和隐私保护等问题,同时也需要注意不要给目标网站带来不必要的负担。我们希望本文能够帮助读者更好地理解网络数据采集的基本流程和相关工具,从而更好地应用网络数据采集技术。

互联说 1577

告别外置电阻!揭秘MAX22201集成电流检测的5大设计优势(附PCB布局案例)

本文深入解析MAX22201集成电流检测技术在直流有刷电机驱动中的5大设计优势,包括BOM成本降低、PCB空间优化、动态性能提升等。通过与传统方案(如DRV8871+外置电阻)的实测对比,展示其在高精度电流检测、抗干扰能力和PCB布局简化方面的突破,并附有详细的PCB布局案例和配置指南。

weixin_29189377的博客 243

pytorchDataLoader中调整数据长度不一致问题(lstm等)

数据长度不一致 用pytorch做rnn的时候,如果输入数据不一样长,可以用两种方式解决。 一种是自定义collate方法, #自定义collate_fn dataloader.DataLoader(dataset,4,True,collate_fn=my_collate) 然后里面写数据和标签载入方式即可 def my_collate(batch): data = [item[0] for item in batch] target = [item[1] for item in batc

weixin_48174100的博客 7770

Python3网络爬虫数据采集(1~3)

一、辅助工具 BeautifulSoup 库 :一款优秀的HTML/XML解析库,采用来做爬虫,不用考虑编码,还有中日韩文的文档,其社区活跃度之高,可见一斑。[注] 这个在解析的时候需要一个解析器,在文档中可以看到,推荐lxml                Requests 库:一款比较好用的HTTP库,当然python自带有urllib以及urllib2等库。             Fiddler工具:这是一个HTTP抓包软件,能够截获所有的HTTP通讯。 二、知识点 1、流程 发起请求 通过HTTP

漆黑梦工厂 1008

一个基于ZYNQ、AXI接口的PL端卷积加速器,可由PS端调用(附Github源码)

一个基于ZYNQ,AXI接口的PL端卷积加速器,可由PS端调用开发板型号:Zynq-7000 SoC XC7Z305 FPGA开发平台:Vivado 2019.1;Github源码链接:https://github.com/CY0807/ZYNQ_PL_CONV_ACC。

跳跳骑士的博客 1306

超全整理|Python数据采集、分析、可视化,看这一篇就够了

前言 最近数据分析越来越火,身边不少人跳入这个行业,我也经常在网上看到许多小伙伴提出很多这样的困惑: 开发出身,想转行数据分析,但没有实战经验,面试很难! 是从 Python 入手还是 R 语言?常用的算法有哪些? 可以练手做项目的数据库去哪里找?好用的爬虫工具又有哪些? 网上看了很多文章,依然杂乱无章,有系统性的资料推荐吗? 我当时学数据分析也有同样的苦恼,资料看了一大堆,总是一知半解,没有老师时时给你解答问题,很多时候都感觉自己要放弃了。 但,我不得不说一句:学数据分析绝对没错,坚持下

z099164的博客 5465

AD936x Evaluation Software 实战配置指南:从寄存器设置到滤波器优化

本文提供AD936x Evaluation Software的实战配置指南,详细解析从工程创建、RF向导与时钟模块配置,到数字滤波器优化、数字接口设置及增益控制的完整流程。重点分享寄存器设置、滤波器系数权衡及PLL稳定技巧等核心要点,帮助开发者高效配置AD9361/AD9363射频芯片,快速应用于SDR、基站等场景。

perl8的博客 697

openclaw 保姆级部署与核心玩法解析:国产DeepSeek模型 + 飞书

OpenClaw是一款功能强大的开源AI个人助理,支持全平台私有化部署,数据完全本地掌控。它不仅可通过聊天窗口直接操控电脑(安装软件、创建项目),还支持接入飞书等主流通讯工具,化身24小时在线的智能助理。本文提供了从零开始的详细部署教程,涵盖基础安装、模型配置(如GLM-4、DeepSeek)到飞书集成的完整实战指南,助你将这款“核动力”AI助手快速融入日常工作流。

甘蓝的专栏 3000

Python网络数据采集的方法

听说还有很多小伙伴还不知道网络数据采集的方法,让我来看看都有谁,不说话我就点名了。我把教程分享在下面了,需要的小伙伴自己领取。(https://jq.qq.com/?_wv=1027&k=kYtMeTfp) 一般情况下以下四种方式都是可以匹配到结果的,只是复杂程度不一致,根据情况进行选择。 ◾正则re的使用 ◾bs4 的使用 ◾xpath ◾PyQuery ① Re(Regular Expression 正则表达式)速度快效率高准确性高; 但使用起来可能相较于其他两种方法会更加的复杂多变,要学习的

m0_67354902的博客 4320

【回答问题】ChatGPT上线了!如何安装python-ipopt?python-ipopt有哪些用法?

python-ipopt是一种基于Python语言的求解非线性最优化问题的软件包。它使用了Interior Point Optimizer(IPOPT)算法来求解最优化问题。这段代码使用python-ipopt求解了一个无约束的非线性最小化问题,其目标函数为(x[0] - 1) ** 2 + (x[1] - 2) ** 2,求解结果为x_opt。求解线性规划问题、二次规划问题、二次范数最小化问题等类型的最优化问题。对于给定的最优化问题,可以设置不同的求解参数来控制求解的精度和效率。

源代码杀手的博客 2146

Python 网络数据采集(二):抓取所有网页

Python 网络数据采集(二):抓取所有网页如有必要,移劝到另一个网页重复这个过程2. 正则表达式2.1 正则表达式和 BeautifulSoup2.2 获取属性2.3 遍历单域名下所有页面2.4 让标签的选择更具体2.5 完整代码3. 下一节,通过互联网采集参见  作者:高玉涵  时间:2022.5.22 08:35  博客:blog.youkuaiyun.com/cg_i 不知前方水深浅。 如有必要,移劝到另一个网页重复这个过程  在互联网上进行自动数据采集这件事情和互联网存在的时间差不多一样长。虽然网络数据采集

4922

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

利用python2.7正则表达式进行豆瓣电影Top250的网络数据采集及MySQL数据库操作

转载请注明出处 利用python2.7正则表达式进行豆瓣电影Top250的网络数据采集 1.任务 采集豆瓣电影名称、链接、评分、导演、演员、年份、国家、评论人数、简评等信息 将以上数据存入MySQL数据库 2.任务解析 requests是很好的网络数据采集模块,配合BeautifulSoup可以解析许多HTML。但个人认为BeautifulSoup返回对...

weixin_34279184的博客 451

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python网络数据采集 第三版_(数据科学学习手札31)基于Python的网络数据采集(初级篇)...

一、简介在实际的业务中,我们手头的数据往往难以满足需求,这时我们就需要利用互联网上的资源来获取更多的补充数据,但是很多情况下,有价值的数据往往是没有提供源文件的直接下载渠道的(即所谓的API),这时我们该如何批量获取这些嵌入网页中的信息呢?这时网络数据采集就派上用处了,你通过浏览器可以观看到的绝大多数数据,都可以利用爬虫来获取,而所谓的爬虫,就是我们利用编程语言编写的脚本,根据其规模大小又分为很多...

weixin_39736650的博客 382

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python爬虫中常用的正则表达式

之所以叫正则表达式,是因为它们可以识别正则字符串(regular string)而什么又是正则字符串呢?其实就是任意可以用一系列线性规则构成的字符串,就像: (1) 字母“a”至少出现一次; (2) 后面跟着字母“b”重复 5 次; (3) 后面再跟字母“c”重复任意偶数次; (4) 最后一位是字母“d”,也可以没有。 在python爬虫中会经常用到正则表达式,所以掌握一些常用的正则表达式十分重要...

stickto11_的博客 574

python题库及答案解析,python编程题库网站

各位朋友们,小编在这里要分享,python题库及答案解析 python编程题库网站,让我们开始吧!

m0_60591287的博客 1026

20190724-Python网络数据采集/第 2 章 复杂HTML解析-导航树/正则表达式

1. 导航树 经典的HTML树状结构 直接看下面的代码示例:(注意目标网页的标签大小写等细节,易出bug) 1 from urllib.request import urlopen 2 from bs4 import BeautifulSoup 3 4 html = urlopen("http://www.pythonscraping.com/pages/page3....

weixin_30737433的博客 179

24秋:数据采集-期末复习题:选择填空判断

数据采集技术 - 复习题题型:单项选择题10道,30分,多项选择题5道,20分,判断题10道,20分,填空题5道,20分,程序题2道,10分。

凡解的博客 2775

使用Python进行数据采集与解析!

Python作为一种功能强大且易于学习的编程语言,提供了丰富的库和工具来实现数据采集和解析。本文将介绍如何使用Python进行数据采集和解析,并通过一个实际的例子来演示整个过程。性能优化:如果需要爬取大量数据,建议使用异步请求库(如aiohttp)来提高爬取效率。数据解析是指将采集到的原始数据转换为结构化数据的过程。lxml:用于加速BeautifulSoup的解析过程。JSON/XML解析:解析JSON或XML格式的数据。HTML解析:从HTML文档中提取有用的信息。数据库查询:从数据库中提取数据。

Python_trys的博客 1495

大一上-课程2 数据采集

云计算与大数据、超文本标记语言及传输协议、HTML超文本标记语言、HTTP超文本传输协议、简单网络爬虫原理、正则表达式、数据采集的实践应用、HTML语言的应用、网页源码的下载、用正则表达式解析网页

Hierarch__的博客 941

python数据采集7-数据清洗

文章目录python数据采集7-数据清洗数据清洗编写代码清洗数据数据标准化数据存储后再清洗 python数据采集7-数据清洗 数据清洗 到目前为止,我们还没有处理过那些样式不规范的数据,要么是使用样式规范的数据源, 要么就是彻底放弃样式不符合我们预期的数据。但是在网络数据采集中,你通常无法对采 集的数据样式太挑剔。 由于错误的标点符号、大小写字母不一致、断行和拼写错误等问题,零乱的数据(dirty...

数据飓风 2179

python——正则表达式

python——正则表达式 文章目录python——正则表达式1. 正则表达式2. 正则表达式的字符对应功能2.1 特殊字符2.2 数量限定字符2.3 位置字符3.正则表达式的匹配类型3.1 单字符匹配3.2 多字符匹配3.3 指定字符匹配4. 正则表达式的应用 1. 正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 2. 正则表达式的字符对应功能 2.

qq_52661119的博客 587

[大数据、Hadoop、数据采集、MySQL、计算机基础、Windows、练习题库、面试]

[大数据][数据采集][练习题][面试] 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。16. 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

m0_57781407的博客 3492

基于python的爬虫实现

基于python的爬虫实现

dys的博客 1209
上一篇: 《Head First Python》第六章--定制数据对象
下一篇: 关于异常捕获和Checked Exception
君只见独不见
博客等级 码龄12年 99粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值