❶ python 如何过滤 HTML标签
基于文本文档(Markdown) 设想好需要的基本需要的表、字段、类型;
使用 Rails Migration 随着功能的开发逐内步创建表;
随着细容节功能的开发、需求,逐步增加字段,删除字段,或者调整字段类型;
第一个 Release 的时候清理 Migrations 合并成一个;
随着后期的改动,逐步增加、修改、删除字段或表。
基本上我的所有项目都是这么搞的,这和项目是否复杂无关。
❷ python3爬虫获取HTML文档时的问题。
很正常。控制台支持的编码有限。建议你存到文件再打开看是否正常。
另外页面写了是gbk编码,存文件也试试gbk
❸ python3.x提取网页全部文本(要求适用全部网站)
#coding=utf-8
importrequests
importsys
defgetHtmlText(url,prefix='http'):
ifnoturl.startswith(prefix):
url='{}://{}'.format(prefix,url)
try:
kv={'User-Agent':'Mozilla/5.0'}#模拟浏览器Mozilla
r=requests.get(url,headers=kv,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
returnr.text
except:
return'爬取失败,请检查网址或网络连接'
if__name__=='__main__':
url='www..com'#要爬取的网站
iflen(sys.argv)>1:
url=sys.argv[1]
fname='a.html'#爬取结果写在这个文件里
iflen(sys.argv)>2:
fname=sys.argv[2]
text=getHtmlText(url)
withopen(fname,'w')asf:
f.write(text)
print('contentofsitewriteat"',fname,'"withlengthof',len(text))
ref:http://www.icourse163.org/course/BIT-1001870001
❹ 求教python 网站爬虫过滤出图片 url 的问题
lxml
#!/usr/bin/python3.4
#-*-coding:utf-8-*-
#教程:http://www.cnblogs.com/TTyb/p/5832790.html
fromlxmlimportetree
importurllib.request
#目标网址的html可以看一下
url="http://www.1kkk.com/manhua589/"
#解析网址
data=urllib.request.urlopen(url).read()
#解码
html=data.decode('UTF-8','ignore')
page=etree.HTML(html.lower())
#查找的目标样式如下
"""
...
<ulclass="sy_nr1cplist_ullg">
<li>
<ahref="/vol1-6871/"class="tg">第1卷</a>(96页)</li>
<li>
<ahref="/vol2-6872/"class="tg">第2卷</a>(90页)</li>
<li>
<ahref="/vol3-6873/"class="tg">第3卷</a>(95页)</li>
<li>
<ahref="/vol4-6874/"class="tg">第4卷</a>(94页)</li>
<li>
<ahref="/vol5-6875/"class="tg">第5卷</a>(95页)</li>
...
"""
#找到ul下li下的a中的href
hrefs=page.xpath('//ul[@class="sy_nr1cplist_ullg"][2]/li/a/@href')
#找到<a>...</a>之间的文字
hrefnames=page.xpath('//ul[@class="sy_nr1cplist_ullg"][2]/li/a/text()')
#找到页数
hrefpages=page.xpath('//ul[@class="sy_nr1cplist_ullg"][2]/li/text()')
forhrefinhrefs:
#打印出来
print(href)
2.BS4
#!/usr/bin/python3.4
#-*-coding:utf-8-*-
importurllib.request
frombs4importBeautifulSoup
#教程:http://www.cnblogs.com/TTyb/p/5799564.html
if__name__=='__main__':
url="http://www.lenggirl.com/"
headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.11(KHTML,likeGecko)Chrome/23.0.1271.64Safari/537.11',
'Accept':'text/html;q=0.9,*/*;q=0.8',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding':'gzip',
'Connection':'close',
'Referer':None
}
data=urllib.request.urlopen(url).read()
#('UTF-8')('unicode_escape')('gbk','ignore')
data=data.decode('UTF-8','ignore')
#初始化网页
soup=BeautifulSoup(data,"html.parser")
#打印整个网页
html=soup.prettify()
#打印<head>...</head>
head=soup.head
#打印<body>...</body>
body=soup.body
#打印第一个<p>...</p>
p=soup.p
#打印p的内容
p_string=soup.p.string
#soup.p.contents[0]为Aug22,2016
#soup.p.contents为['Aug22,2016 ']
p_string=soup.p.contents[0]
#将body里面的所有头打印出来
forchildinsoup.body.children:
#print(child)
pass
#将所有的<a>...</a>和<p>...</p>打印出来
a_and_p=soup.find_all(["a","p"])
#找到<a>...</a>下所有的网址
formyimginsoup.find_all('a'):
img_src=myimg.get('href')
#print(img_src)
#找到<a>...</a>下类为class_='a'下面的<img>...</img>里面的src
formyimginsoup.find_all('a',class_='a'):
img_src=myimg.find('img').get('src')
#网页所有信息
#print(html)
3.正则
❺ python 正则 匹配HTML
正确的复html闭标签里,是以制/开头的,所以网页的源代码不可能是<\/span>,<span class=\"name\">小小少年lala<\/span>\r\n\t里的前三个\是为了在字符串里显示“和/而已,并不是字符串的内容。
网页应该是
<span class="name">小小少年lala</span>\r\n\t
你的正则应该用
p=re.compile('<span class="name">(.*)<\/span>')
❻ python3 能解析html吗
可以的,使用beautifulsoup就可以解析了。
import urllib
import urllib.request
import beautifulsoup
html = urllib.request.urlopen('http://yugioh.wikia.com/wiki/Card_Tips:Blue-Eyes_White_Dragon').read()
soup = beautifulsoup.bs4(html)
texts = soup.findAll(text=True)
def visible(element):
if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
return False
elif re.match('<!--.*-->', str(element)):
return False
return True
visible_texts = filter(visible, texts)
❼ python正则表达式去除html标签的属性
importre
test='<pclass="pictext"align="center">陈细妹</p>'
test=re.sub(r'(<[^>s]+)s[^>]+?(>)',r'12',test)
print(test)
❽ python3 htmltestrunner 怎么判断用例失败
修改HTMLTestRunner.py以支持+
搜索到的结果整理
修改一: 在python shell里输入 >>>import HTMLTestRunner >>> dir(HTMLTestRunner) 发现不认识StringIO (No mole named StringIO)
确实3里面没有这个了,第94行引入的名称要改,改成import io,539行要改成self.outputBuffer = io.BytesIO()
修改二: 运行程序的时候有报错,AttributeError: ‘dict’ object has no attribute ‘has_key’ 发现has_key的又被K掉了
到642行去做修改,if not rmap.has_key(cls): 需要换成 if not cls in rmap: (修改的时候换行、空格等不要改掉原有的格式)
修改三: 运行,继续有报错:’str’ object has no attribute ‘decode’
好像是3里面对字符的操作,decode已经拿掉了。定位一下,报在了772行,ue = e.decode(‘latin-1’),那么不需要decode操作了吧,直接改成 ue = e ,另外766还有类似的uo = o.decode(‘latin-1’),可不动先留着;
打开本地文件需用 fp = open(filename,’wb’),不要再去用file了;关闭该文件可用fp.close()
修改四: 继续运行,发现还是在纠结数据类型的错: output = saxutils.escape(uo+ue), TypeError: can’t concat bytes to str
bytes和str不能直接连起来,那么778行的内容escape(uo+ue) 有一个处理的“笨办法”:都改成str,可修改该处内容为escape(str(uo)+ue)
修改五:(此处是最后一处改动了) 程序已然运行大半,但是最后还是有error: print >>sys.stderr, ‘ Time Elapsed: %s’ % (self.stopTime-self.startTime) TypeError: unsupported operand type(s) for >>: ‘builtin_function_or_method’ and ‘RPCProxy’
到631行,把print的语句修改掉,改成 print (sys.stderr, ‘ Time Elapsed: %s’ % (self.stopTime-self.startTime))
❾ python 去除html标签的几种方法
python去除html标签的几种方法,代码如下:
#!/usr/bin/python
#-*-coding:utf-8-*-
'''
Createdon2015-07-08
@author:Administrator
'''
importre
classFilterTag():
def__init__(self):
pass
deffilterHtmlTag(self,htmlStr):
'''
过滤html中的标签
:paramhtmlStr:html字符串或是网页源码
'''
self.htmlStr=htmlStr
#先过滤CDATA
re_cdata=re.compile('//]*//]]>',re.I)#匹配CDATA
re_script=re.compile('<s*script[^>]*>[^<]*<s*/s*scripts*>',re.I)#Script
re_style=re.compile('<s*style[^>]*>[^<]*<s*/s*styles*>',re.I)#style
re_br=re.compile('')#处理换行
re_h=re.compile(']*>')#HTML标签
re_comment=re.compile('')#HTML注释
s=re_cdata.sub('',htmlStr)#去掉CDATA
s=re_script.sub('',s)#去掉SCRIPT
s=re_style.sub('',s)#去掉style
s=re_br.sub(' ',s)#将br转换为换行
blank_line=re.compile(' +')#去掉多余的空行
s=blank_line.sub(' ',s)
s=re_h.sub('',s)#去掉HTML标签
s=re_comment.sub('',s)#去掉HTML注释
#去掉多余的空行
blank_line=re.compile(' +')
s=blank_line.sub(' ',s)
filterTag=FilterTag()
s=filterTag.replaceCharEntity(s)#替换实体
prints
defreplaceCharEntity(self,htmlStr):
'''
替换html中常用的字符实体
使用正常的字符替换html中特殊的字符实体
可以添加新的字符实体到CHAR_ENTITIES中
CHAR_ENTITIES是一个字典前面是特殊字符实体后面是其对应的正常字符
:paramhtmlStr:
'''
self.htmlStr=htmlStr
CHAR_ENTITIES={'nbsp':'','160':'',
'lt':'<','60':'<',
'gt':'>','62':'>',
'amp':'&','38':'&',
'quot':'"','34':'"',}
re_charEntity=re.compile(r'&#?(?Pw+);')
sz=re_charEntity.search(htmlStr)
whilesz:
entity=sz.group()#entity全称,如>
key=sz.group('name')#去除&;后的字符如(""--->key="nbsp")去除&;后entity,如>为gt
try:
htmlStr=re_charEntity.sub(CHAR_ENTITIES[key],htmlStr,1)
sz=re_charEntity.search(htmlStr)
exceptKeyError:
#以空串代替
htmlStr=re_charEntity.sub('',htmlStr,1)
sz=re_charEntity.search(htmlStr)
returnhtmlStr
defreplace(self,s,re_exp,repl_string):
returnre_exp.sub(repl_string)
defstrip_tags(self,htmlStr):
'''
使用HTMLParser进行html标签过滤
:paramhtmlStr:
'''
self.htmlStr=htmlStr
htmlStr=htmlStr.strip()
htmlStr=htmlStr.strip(" ")
result=[]
parser=HTMLParser()
parser.handle_data=result.append
parser.feed(htmlStr)
parser.close()
return''.join(result)
defstripTagSimple(self,htmlStr):
'''
最简单的过滤html<>标签的方法注意必须是<任意字符>而不能单纯是<>
:paramhtmlStr:
'''
self.htmlStr=htmlStr
#dr=re.compile(r'<[^>]+>',re.S)
dr=re.compile(r']*>',re.S)
htmlStr=re.sub(dr,'',htmlStr)
returnhtmlStr
if__name__=='__main__':
#s=file('Google.html').read()
filters=FilterTag()
printfilters.stripTagSimple("<1>你好")
❿ python中如何通过关键字查找到指定的HTML标签
可以使用正则表达式的方法
正则表达式:工作职责:</th>s+<td>(.+?)</td>
importre
content="页面内容"
re_1=re.search('工作职责:</th>s+<td>(.+?)</td>',content)
ifre_1:
printre_1.group(1)
else:
print"notfind!"
因为正则表达式有中文 所以要保证你的内容与文本是一个编码