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中的装饰器
Jul 31 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
Python中Django 后台自定义表单控件
Mar 28 Python
python机器人行走步数问题的解决
Jan 29 Python
Python实现连接MySql数据库及增删改查操作详解
Apr 16 Python
python自动发微信监控报警
Sep 06 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
python3.6使用SMTP协议发送邮件
May 20 Python
Python日志器使用方法及原理解析
Sep 27 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
python爬虫分布式获取数据的实例方法
Nov 26 Python
Python Matplotlib库实现画局部图
Nov 17 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编程中八种常见的文件操作方式
2006/11/19 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
Javascript var变量隐式声明方法
2009/10/19 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
Django实现分页功能
2018/07/02 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
Python-opencv 双线性插值实例
2020/01/17 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
农村婚礼证婚词
2014/01/08 职场文书
离婚协议书范文
2015/01/26 职场文书
电力工程合作意向书
2015/05/11 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
德劲DE1108畅想
2021/04/22 无线电
javascript的setTimeout()使用方法总结
2021/11/20 Javascript