python学习小记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

python爬虫数据页面解析方法记录。分布为:re、BeautifulSoup、xpath。


提示:以下是本篇文章正文内容,下面案例可供参考

一、re正则表达式

定义:是为了匹配字符串中符合正则表达式的内容。

1. findall: 匹配字符串中所有的符合正则的内容,返回为list列表

例子如下:

lst = re.findall(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")

2. finditer: 匹配字符串中所有的内容[返回的是迭代器], 从迭代器中拿到内容需要.group()

例子如下:

it = re.finditer(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")
for i in it:
print(i.group())

3. search:找到一个结果就返回, 返回的结果是match对象. 拿数据需要.group()

例子如下:

s = re.search(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")
print(s.group())

4. match:是从头开始匹配,开头不符合即失败

例子如下:

s = re.match(r"\d+", "10086, 我女朋友的电话是:10010")
print(s.group())

5. compile:预加载正则表达式

例子如下:

obj = re.compile(r"\d+")
ret = obj.finditer("我的电话号是:10086, 我女朋友的电话是:10010")
for it in ret:
print(it.group())

二、BeautifulSoup

1.安装

代码如下(示例):

pip install bs4

2.解析

把页面源代码交给BeautifulSoup进行处理, 生成bs对象
代码如下(示例):

page = BeautifulSoup(resp.text, "html.parser")  # 指定html解析器

从bs对象中查找数据。

2.1 find(标签, 属性=值)

示例:

table = page.find("table", class_="hq_table")  # class是python的关键字,所有加'_'

2.2 find_all(标签, 属性=值)

示例:

trs = table.find_all("tr")[1:] # 这里刨除表头
for tr in trs:  # 每一行
    tds = tr.find_all("td")  # 拿到每行中的所有td
    name = tds[0].text  # .text 表示拿到被标签标记的内容
    low = tds[1].text  # .text 表示拿到被标签标记的内容
    avg = tds[2].text  # .text 表示拿到被标签标记的内容
    high = tds[3].text  # .text 表示拿到被标签标记的内容
    gui = tds[4].text  # .text 表示拿到被标签标记的内容
    kind = tds[5].text  # .text 表示拿到被标签标记的内容
    date = tds[6].text  # .text 表示拿到被标签标记的内容

三、xpath

1. 安装

pip install lxml

2. 解析

这个是以页面层级查找的,首先创建etree对象

result = tree.xpath("/book/name/text()")  # text() 拿文本
result = tree.xpath("/book/author//nick/text()")  # // 后代
result = tree.xpath("/book/author/*/nick/text()")  # * 任意的节点. 通配符(会儿)
result = tree.xpath("/html/body/ul/li[1]/a/text()")  # xpath的顺序是从1开始数的, []表示索引
result = tree.xpath("/html/body/ol/li/a[@href='dapao']/text()")  # [@xxx=xxx] 属性的筛选

result = li.xpath("./a/text()")  # 在li中继续去寻找. 相对查找
result2 = li.xpath("./a/@href")  # 拿到属性值: @属性

PS

这些只是本人学习过程中记得笔记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值