正则表达式与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个,证明正则的方法筛选数量的准确率更高。

相关推荐
小白快快跑哦15 小时前
python-字符串全解(六):正则表达式-量词
python·正则表达式·字符串
福兮说1 天前
JS 正则的六个坑:带 g 的 test() 一真一假、空匹配死循环、replace 里的 $
开发语言·前端·javascript·正则表达式
Rebecca_aLi1 天前
码匠教育:零基础学 Python,标识符到循环全套基础语法解析
开发语言·python·正则表达式
IvanCodes1 天前
Python 正则表达式(十四):文本匹配、查找与替换
开发语言·python·正则表达式
FED_AF2 天前
Linux运维“邪修”功法之正则表达式
linux·运维·正则表达式
长按助力退休3 天前
正则表达式从入门到不懵逼
正则表达式
小白快快跑哦9 天前
python-字符串全解(六):正则表达式-转义与非转义
python·正则表达式·转义与非转义
zx_7414848111 天前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Patrick在香港14 天前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
梦帮科技15 天前
Next.js 16 模块化单体实战:App Router、领域模块与 Route Handler 分层
css·数据结构·链表·正则表达式·node.js·json·html5