Python识别html主要文本框过程解析
这篇文章主要介绍了python识别html主要文本框过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在抓取网页的时候只想抓取主要的文本框,例如csdn中的主要文本框为下图红色框:
抓取的思想是,利用bs4查找所有的div,用正则筛选出每个div里面的中文,找到中文字数最多的div就是属于正文的div了。定义一个抓取的头部抓取网页内容:
importrequests headers={ 'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/47.0.2526.106Safari/537.36', 'Host':'blog.csdn.net'} session=requests.session() defgetHtmlByRequests(url): headers.update( dict(Referer=url,Accept="*/*",Connection="keep-alive")) htmlContent=session.get(url=url,headers=headers).content returnhtmlContent.decode("utf-8","ignore")
识别每个div中文字的正则:
importre #统计中文字数 defcountContent(string): pattern=re.compile(u'[\u1100-\uFFFD]+?') content=pattern.findall(string) returncontent
遍历每一个div,利用正则判断里面中文的字数长度,找到长度最长的div:
#分析页面信息 defanalyzeHtml(html): #初始化网页 soup=BeautifulSoup(html,"html.parser") part=soup.select('div') match="" forparagraphinpart: content=countContent(str(paragraph)) iflen(content)>len(match): match=str(paragraph) returnmatch
得到主要的div后,提取里面的文字出来:
defmain(): url="http://blog.csdn.net/" html=getHtmlByRequests(url) mainContent=analyzeHtml(html) soup=BeautifulSoup(mainContent,"html.parser") print(soup.select('div')[0].text)
完整的代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- frombs4importBeautifulSoup importrequests importre headers={ 'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/47.0.2526.106Safari/537.36', 'Host':'blog.csdn.net'} session=requests.session() defgetHtmlByRequests(url): headers.update( dict(Referer=url,Accept="*/*",Connection="keep-alive")) htmlContent=session.get(url=url,headers=headers).content returnhtmlContent.decode("utf-8","ignore") #统计中文字数 defcountContent(string): pattern=re.compile(u'[\u1100-\uFFFD]+?') content=pattern.findall(string) returncontent #分析页面信息 defanalyzeHtml(html): #初始化网页 soup=BeautifulSoup(html,"html.parser") part=soup.select('div') match="" forparagraphinpart: content=countContent(str(paragraph)) iflen(content)>len(match): match=str(paragraph) returnmatch defmain(): 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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。