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获取android设备的GPS信息脚本分享
Mar 06 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
Python之re操作方法(详解)
Jun 14 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
python如何生成网页验证码
Jul 28 Python
对numpy中向量式三目运算符详解
Oct 31 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
python爬取内容存入Excel实例
Feb 20 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
Python用来做Web开发的优势有哪些
Aug 05 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 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
How do I change MySQL timezone?
2008/03/26 PHP
php类常量的使用详解
2013/06/08 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
JavaScript 字符串连接性能优化
2008/12/20 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
python利用beautifulSoup实现爬虫
2014/09/29 Python
python访问系统环境变量的方法
2015/04/29 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
机械设计制造专业个人求职信
2013/09/25 职场文书
小学生班会演讲稿
2014/01/09 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
上课不认真检讨书
2014/09/17 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书