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 fileinput模块使用实例
Jun 03 Python
python使用clear方法清除字典内全部数据实例
Jul 11 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
Python实现的选择排序算法示例
Nov 29 Python
Python入门必须知道的11个知识点
Mar 21 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
python 如何在测试中使用 Mock
Mar 01 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 30 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中如何将数组变量写入文件
2013/06/06 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
详解PHP队列的实现
2019/03/14 PHP
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Python如何访问字符串中的值
2020/02/09 Python
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
C#基础面试题
2016/10/17 面试题
工伤事故赔偿协议书
2014/04/15 职场文书
奉献演讲稿范文
2014/05/21 职场文书
颐和园导游词400字
2015/01/30 职场文书
战友聚会致辞
2015/07/28 职场文书
运动会广播稿300字
2015/08/19 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技