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启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
python原始套接字编程示例分享
Feb 21 Python
Python写的英文字符大小写转换代码示例
Mar 06 Python
Python的Django框架中TEMPLATES项的设置教程
May 29 Python
Python中正则表达式详解
May 17 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
如何在mac下配置python虚拟环境
Jul 06 Python
Python字符串及文本模式方法详解
Sep 10 Python
利用Python判断你的密码难度等级
Jun 02 Python
python疲劳驾驶困倦低头检测功能的实现
Apr 04 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 工厂模式使用方法
2010/05/18 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
基于python socketserver框架全面解析
2017/09/21 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
2014年小学教导处工作总结
2014/12/19 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android