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

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

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()一样算出了论文数:

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

相关推荐

  1. linux表达式^

    2023-12-24 23:54:02       30 阅读
  2. linux表达式*

    2023-12-24 23:54:02       18 阅读
  3. 表达式通配符

    2023-12-24 23:54:02       8 阅读
  4. Shell 编程表达式文本处理器

    2023-12-24 23:54:02       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-24 23:54:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-24 23:54:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-24 23:54:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-24 23:54:02       18 阅读

热门阅读

  1. Python---类(初始化函数)

    2023-12-24 23:54:02       45 阅读
  2. @RequestBody详解:用于获取请求体中的Json格式参数

    2023-12-24 23:54:02       50 阅读
  3. C语言的if语句(三 )

    2023-12-24 23:54:02       45 阅读
  4. Microsoft Edge使用方法和心得

    2023-12-24 23:54:02       35 阅读
  5. 适配器设计模式

    2023-12-24 23:54:02       39 阅读
  6. 【表的内连和外连】

    2023-12-24 23:54:02       41 阅读