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的urllib库提交WEB表单
Feb 24 Python
使用python编写批量卸载手机中安装的android应用脚本
Jul 21 Python
Python新手在作用域方面经常容易碰到的问题
Apr 03 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
Python3中exp()函数用法分析
Feb 19 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
python的常见矩阵运算(小结)
Aug 07 Python
python openCV获取人脸部分并存储功能
Aug 28 Python
python元组的概念知识点
Nov 19 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 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加密解密的代码
2006/10/09 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
python实现的重启关机程序实例
2014/08/21 Python
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
Django中的AutoField字段使用
2020/05/18 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
财务会计专业个人求职信范本
2014/01/08 职场文书
高中美术教学反思
2014/01/19 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
投资合作意向书范本
2015/05/08 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书