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 相关文章推荐
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
Python之reload流程实例代码解析
Jan 29 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
python防止随意修改类属性的实现方法
Aug 21 Python
python 利用pyttsx3文字转语音过程详解
Sep 25 Python
用Python画小女孩放风筝的示例
Nov 23 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 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 快速生成 Flash 动画的方法
2007/03/06 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
python生成器的使用方法
2013/11/21 Python
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
Python 功能和特点(新手必学)
2015/12/30 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
Python读写锁实现实现代码解析
2020/11/28 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
Linux的主要特性
2016/09/03 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
论文答谢词
2015/01/20 职场文书
停电放假通知
2015/04/14 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
mysql的数据压缩性能对比详情
2021/11/07 MySQL
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers