python - REGEX 提取部分链接

标签 python regex

我的目标是从拍卖网站页面上抓取一些拍卖 ID。页面是here

对于我感兴趣的页面,大约有 60 个拍卖 ID。 auctionID 前面有一个破折号,由 10 位数字组成,并在 .htm 之前终止。例如,在下面的链接中,ID 为 0133346952

<a href="/sports/cycling/mountain-bikes/full-suspension/auction-1033346952.htm" class="tile-2">

我已经通过识别“a”标签来提取所有链接。此代码位于页面底部。

根据我有限的知识,我认为 REGEX 应该是解决这个问题的正确方法。我在想 REGEX 类似:

-...........htm

但是,我未能成功地将正则表达式集成到代码中。我本来想像

for links in soup.find_all('-...........htm'):

本来可以达到目的,但显然不行。

如何修复此代码?

import bs4
import requests
import re
res = requests.get('http://www.trademe.co.nz/browse/categorylistings.aspx?mcatpath=sports%2fcycling%2fmountain-bikes%2ffull-suspension&page=2&sort_order=default&rptpath=5-380-50-7145-')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')
for links in soup.find_all('-...........htm'):
    print (links.get('href'))

最佳答案

这是有效的代码:

for links in soup.find_all(href=re.compile("auction-[0-9]{10}.htm")):
    h = links.get('href')
    m = re.search("auction-([0-9]{10}).htm", h)
    if m:
        print(m.group(1))

首先,您需要一个正则表达式来提取 href。然后你需要一个捕获正则表达式来提取 id。

关于python - REGEX 提取部分链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35520738/

相关文章:

Javascript,替换为正则表达式,这种情况可以吗?

c# - 密码的正则表达式

javascript - 正则表达式格式字符串数字,在 javascript 中带有逗号和 2 位小数

Python ETL - 使用 cx_Oracle 批量或迭代地将大型数据集加载到 Oracle 数据库中

python - scipy.integrate.quad 在大范围内给出错误的结果

c# - 如何检查数字字符串是否在运行序列中

regex - 是否存在原生文本操作比正则表达式更可取的特定情况?

python - 如何将数组元组转换为字典?

python - 相当于 Python 中的 implode(php)

java - Hadoop 中的流式处理或自定义 Jar