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 相关文章推荐
实现python版本的按任意键继续/退出
Sep 26 Python
Python中enumerate函数代码解析
Oct 31 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
Python使用while循环花式打印乘法表
Jan 28 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
sklearn的predict_proba使用说明
Jun 28 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
python如何做代码性能分析
Apr 26 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中的多态性[译]
2011/08/02 PHP
PHP页面中文乱码分析
2013/10/29 PHP
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
Python flask框架post接口调用示例
2019/07/03 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
Python新手学习装饰器
2020/06/04 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
技校毕业生的自我评价
2013/12/27 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
食品销售计划书
2014/04/26 职场文书
美术学专业求职信
2014/07/23 职场文书
信息合作协议书
2014/10/09 职场文书
英语辞职信范文
2015/02/28 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
师范生教育见习总结
2015/06/23 职场文书
解决MySQL报“too many connections“错误
2022/04/19 MySQL