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中Collections模块的Counter容器类使用教程
May 31 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
tensorflow实现加载mnist数据集
Sep 08 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
用Python实现校园通知更新提醒功能
Nov 23 Python
python环境下安装opencv库的方法
Mar 05 Python
Python作用域与名字空间原理详解
Mar 21 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
python数字类型和占位符详情
Mar 13 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
django 中QuerySet特性功能详解
2019/07/25 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
python集合删除多种方法详解
2020/02/10 Python
python Canny边缘检测算法的实现
2020/04/24 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
挂职学习心得体会
2014/09/09 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
政协常委会议主持词
2015/07/03 职场文书
2016国培研修心得体会
2016/01/08 职场文书
Python初识逻辑与if语句及用法大全
2021/08/07 Python
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server
Python软件包安装的三种常见方法
2022/07/07 Python