我的目标是从拍卖网站页面上抓取一些拍卖 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/