正则表达式与bs4选择器筛选论文数准确率之比较

一、正则爬取论文网首页论文标题的示例

python 复制代码
import requests
import re
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/83.0.4103.116 Safari/537.36'}


def get_html(url):
    try:
        res = requests.get(url, headers=headers)
        res.raise_for_status()
        res.encoding = 'gbk'
        return res.text
    except:
        print('response error!')


def paper_title(page):
    my_items = re.findall(r'<a href="(.*?)" target="_blank">(.*?)</a>', page)
    print('paper count of main page:' + str(len(my_items)))       # 用正则的findall得出首页所有论文的超链接数量
    for item in my_items:
        print(item)

二、主函数使用bs4的CSS选择器select()一样算出了论文数:

python 复制代码
if __name__ == '__main__':
    url = 'https://www.lunwendata.com/'
    html = get_html(url)
    soup = BeautifulSoup(html, 'html.parser')
    size = len(soup.select('a[target="_blank"]'))  # 用CSS选择器得出首页所有论文超链接数
    print('paper count of main page:' + str(size))
    paper_title(html)

三、输出结果得出用正则方法筛选准确率更高:

可以看到,用正则的方法筛选出的数量比bs4的select选择器筛选出的少了20个,证明正则的方法筛选数量的准确率更高。

相关推荐
只愿云淡风清5 天前
正则表达式学习笔记 02:基础语法
笔记·学习·正则表达式
Frag0ut10 天前
Notepad++ 正则表达式完全手册:文本处理的终极武器(2026实战版)
正则表达式·notepad++·数据清洗·日志分析·正则替换·提取ip·正则表达式实战
Patrick在香港12 天前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
echome88813 天前
Python 正则表达式:5 个日常够用的模式
python·正则表达式
yivifu14 天前
能够使用Python正则表达式函数的文本处理工具——Calibre电子书编辑器
正则表达式
全栈陈序员15 天前
【Python】基础语法入门(二十九)—— 正则表达式实战:文本处理利器
开发语言·人工智能·python·正则表达式
BruceXu20 天前
\b 在中文里会静默失效:三个正则坑和一份能用的字符边界方案
正则表达式
阿昭L22 天前
正则表达式
正则表达式·编译原理
波力海苔夹心脆67522 天前
C# 正则表达式零基础入门:从“看得懂“到“会用“
经验分享·后端·mysql·正则表达式·c#
FRing0323 天前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式