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之模拟鼠标键盘动作具体实现
Dec 30 Python
python迭代器实例简析
Sep 25 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
Apr 01 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
解决python删除文件的权限错误问题
Apr 24 Python
Python如何实现转换URL详解
Jul 02 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
Jan 07 Python
Python3压缩和解压缩实现代码
Mar 01 Python
python中Matplotlib绘制直线的实例代码
Jul 04 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编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
js实现随机点名功能
2020/12/23 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
python计算圆周率pi的方法
2015/07/11 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
python爬虫中多线程的使用详解
2019/09/23 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
机械电子工程毕业生自荐信
2013/11/23 职场文书
索桥的故事教学反思
2014/02/06 职场文书
向领导表决心的话
2014/03/11 职场文书
大学新闻系自荐书
2014/05/31 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
工作失职自我检讨书
2015/05/05 职场文书
革命电影观后感
2015/06/18 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python