如何使用Python从网页中提取包含非空锚文本且符合条件的p标签内容
调整后可实现需求的完整代码
import time from bs4 import BeautifulSoup from selenium import webdriver # 注意修改chromedriver路径为你本地的实际路径 driver = webdriver.Chrome('chromedriver.exe') addrlist = ['https://poocoin.app/rugcheck/0x8076c74c5e3f5852037f31ff0093eeb8c8add8d3/dev-activity', 'https://poocoin.app/rugcheck/0xd7ac542add4994a9d72369ab8d4788a38df6a217/dev-activity', 'https://poocoin.app/rugcheck/0xf017e2773e4ee0590c81d79ccbcf1b2de1d22877/dev-activity'] for url in addrlist: # 从URL中提取当前token的地址,作为输出块的首行 token_addr = url.split('/')[-2] print(token_addr) driver.get(url) time.sleep(8) soup = BeautifulSoup(driver.page_source, 'lxml') pdata = soup.find_all('div',attrs={"class":"mt-2"}) for x in pdata: p_tag = x.find('p') if not p_tag: continue # 筛选条件1:p标签内存在非空锚文本的a标签 a_tags = p_tag.find_all('a') has_valid_a = any(a.get_text(strip=True) != '' for a in a_tags) if not has_valid_a: continue # 筛选条件2:排除不需要的无关p标签 p_text = p_tag.get_text(strip=True) if p_text.startswith('Go to chart') or p_text.startswith('This is a log of'): continue # 输出格式化的内容,前面加两个空格缩进 print(f' {p_text}') # 每个地址输出后加空行分隔 print() driver.quit()
核心调整说明
- 直接从请求URL中拆分提取token地址,作为每组结果的首行输出
- 新增两层过滤规则:先校验p标签内是否存在非空文本的a标签,再过滤掉"Go to chart"、说明文本等无关内容
- 使用BeautifulSoup的
get_text()方法自动提取p标签内的所有纯文本内容,自动去除HTML标签 - 对有效内容添加缩进,每组结果用空行分隔,匹配你需要的可读性要求
可选优化建议
- 可以用Selenium的显式等待(WebDriverWait)替换固定的
time.sleep(8),根据页面元素加载状态判断等待时间,提升爬取效率 - 如果需要统一日期格式,可以额外引入datetime模块对提取到的日期字符串做格式化处理
内容的提问来源于stack exchange,提问作者rbutrnz
相关产品推荐
相关产品推荐

