Python识别html主要文本框过程解析


Posted in Python onFebruary 18, 2020

这篇文章主要介绍了python识别html主要文本框过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在抓取网页的时候只想抓取主要的文本框,例如 csdn 中的主要文本框为下图红色框:

Python识别html主要文本框过程解析

抓取的思想是,利用 bs4 查找所有的 div,用正则筛选出每个 div 里面的中文,找到中文字数最多的 div 就是属于正文的 div 了。定义一个抓取的头部抓取网页内容:

import requests
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36',
  'Host': 'blog.csdn.net'}
session = requests.session()
 
def getHtmlByRequests(url):
  headers.update(
    dict(Referer=url, Accept="*/*", Connection="keep-alive"))
  htmlContent = session.get(url=url, headers=headers).content
  return htmlContent.decode("utf-8", "ignore")

识别每个 div 中文字的正则:

import re
# 统计中文字数
def countContent(string):
  pattern = re.compile(u'[\u1100-\uFFFD]+?')
  content = pattern.findall(string)
  return content

遍历每一个 div ,利用正则判断里面中文的字数长度,找到长度最长的 div :

# 分析页面信息
def analyzeHtml(html):
  # 初始化网页
  soup = BeautifulSoup(html, "html.parser")
  part = soup.select('div')
  match = ""
  for paragraph in part:
    content = countContent(str(paragraph))
    if len(content) > len(match):
      match = str(paragraph)
  return match

得到主要的 div 后,提取里面的文字出来:

def main():
  url = "http://blog.csdn.net/"
  html = getHtmlByRequests(url)
  mainContent = analyzeHtml(html)
  soup = BeautifulSoup(mainContent, "html.parser")
  print(soup.select('div')[0].text)

完整的代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup
import requests
import re

headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36',
  'Host': 'blog.csdn.net'}
session = requests.session()


def getHtmlByRequests(url):
  headers.update(
    dict(Referer=url, Accept="*/*", Connection="keep-alive"))
  htmlContent = session.get(url=url, headers=headers).content
  return htmlContent.decode("utf-8", "ignore")

# 统计中文字数
def countContent(string):
  pattern = re.compile(u'[\u1100-\uFFFD]+?')
  content = pattern.findall(string)
  return content

# 分析页面信息
def analyzeHtml(html):
  # 初始化网页
  soup = BeautifulSoup(html, "html.parser")
  part = soup.select('div')
  match = ""
  for paragraph in part:
    content = countContent(str(paragraph))
    if len(content) > len(match):
      match = str(paragraph)
  return match


def main():
  url = "http://blog.csdn.net/"
  html = getHtmlByRequests(url)
  mainContent = analyzeHtml(html)
  soup = BeautifulSoup(mainContent, "html.parser")
  print(soup.select('div')[0].text)


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pygame学习笔记(4):声音控制
Apr 15 Python
python中的代码编码格式转换问题
Jun 10 Python
bpython 功能强大的Python shell
Feb 16 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
May 25 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python操作mongodb数据库进行模糊查询操作示例
Jun 09 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
利用Python绘制Jazz网络图的例子
Nov 21 Python
python已协程方式处理任务实现过程
Dec 27 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
Python3使用Selenium获取session和token方法详解
Feb 16 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 #Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 #Python
tensorflow 分类损失函数使用小记
Feb 18 #Python
python如何把字符串类型list转换成list
Feb 18 #Python
python计算波峰波谷值的方法(极值点)
Feb 18 #Python
Python表达式的优先级详解
Feb 18 #Python
使用Tkinter制作信息提示框
Feb 18 #Python
You might like
php 图片上传类代码
2009/07/17 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
python3 求约数的实例
2019/12/05 Python
Python pip配置国内源的方法
2020/02/14 Python
浅析matlab中imadjust函数
2020/02/27 Python
Python super()函数使用及多重继承
2020/05/06 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
公司员工的自我评价范例
2013/11/01 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
消防演习感想
2015/08/10 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python