python获取html⽂本框内容_Python识别html主要⽂本框过程
解析
这篇⽂章主要介绍了python识别html主要⽂本框过程解析,⽂中通过⽰例代码介绍的⾮常详细,对⼤家的学习或者⼯作具有⼀定的参考学习价值,需要的朋友可以参考下
在抓取⽹页的时候只想抓取主要的⽂本框,例如 csdn 中的主要⽂本框为下图红⾊框:
抓取的思想是,利⽤ 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'}
session = requests.session()
def getHtmlByRequests(url):
headers.update(
dict(Referer=url, Accept="*/*", Connection="keep-alive"))
htmlContent = (url=url, headers=headers).content
return htmlContent.decode("utf-8", "ignore")
识别每个 div 中⽂字的正则:
import re
# 统计中⽂字数
def countContent(string):
pattern = repile(u'[\u1100-\uFFFD]+?')
content = pattern.findall(string)
return content
遍历每⼀个 div ,利⽤正则判断⾥⾯中⽂的字数长度,到长度最长的 div :
# 分析页⾯信息
def analyzeHtml(html):
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 = "blog.csdn/"
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'}
session = requests.session()
def getHtmlByRequests(url):
headers.update(
dict(Referer=url, Accept="*/*", Connection="keep-alive"))
htmlContent = (url=url, headers=headers).content
return htmlContent.decode("utf-8", "ignore")
# 统计中⽂字数
def countContent(string):
pattern = repile(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 = "blog.csdn/"
html = getHtmlByRequests(url)
mainContent = analyzeHtml(html)
soup = BeautifulSoup(mainContent, "html.parser")
print(soup.select('div')[0].text)
if __name__ == '__main__':
main()
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持python博客。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论