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搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
python字典的遍历3种方法详解
Aug 10 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
python如何使用代码运行助手
Jul 03 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
javascript document.referrer 用法
2009/04/30 Javascript
JQuery优缺点分析说明
2010/06/09 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
python判断字符串是否包含子字符串的方法
2015/03/24 Python
Python any()函数的使用方法
2019/10/28 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
感情真挚的毕业生求职信
2014/07/19 职场文书
高中生学习计划书
2014/09/15 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby
利用Python实时获取steam特惠游戏数据
2022/06/25 Python
python计算列表元素与乘积详情
2022/08/05 Python