求一个正则 如题 求一个正则 可以获取 网页中 title 标签中的内容, 内容中 有空格,换行,都能获取到 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #!/usr/local/bin/python# -*- coding: utf-8 -*-#modulesimport urllib2import re#configurevideo_baidu = "http://video.baidu.com/"html_output_path = "video.html"def spider_top10_videos(): try: url_fp = urllib2.urlopen(video_baidu, None, 30) html = url_fp.read() except: return False else: url_fp.close() match_obj = re.search(r'<ol.*?class="top-list".*?id="index_top_search_list".*?>(.*?)</ol>', html, re.I | re.S) if match_obj == None: return False match_html = match_obj.group(1) video_urls = re.findall(r'<a.*?href="(.*?)"', match_html, re.S | re.I) return video_urlsdef spider_video_links(url): try: url_fp = urllib2.urlopen(url, None, 30) html = url_fp.read() except: return False else: url_fp.close() match_obj = re.search(r'<span.*?class="postertitle">(.*?)</span>', html, re.S | re.I) if not match_obj: return False name = match_obj.group(1).strip() match_obj = re.search(r'<div.*?id="VideoPcTVMenu".*?>(.*?)</div>', html, re.S | re.I) if not match_obj: return False match_html = match_obj.group(1) match_obj = re.findall(r'<a.*?href="(.*?)".*?title="(.*?)"', match_html, re.I | re.S) if not match_obj: return False return {"name":name, "list":match_obj}if __name__ == "__main__": video_urls = spider_top10_videos() if not video_urls: exit else: with open(html_output_path, "w") as fp_html: del video_urls[0] fp_html.write('<html><head><meta http-equiv="Content-Type" content="text/html;charset=gbk"/>\ </head><body><table border="1">') for url in video_urls: video = spider_video_links(url) if not video: continue fp_html.write("<tr><td>" + video['name'] + '</td><td><table border="1">') for item in video['list']: fp_html.write('<tr><td><a href="http://video.baidu.com' + item[0] + '">' + item[1] + "</a></td></tr>") fp_html.write("</table></td></tr>") fp_html.write("</table></body></html>") 直接用JQuery中的选择器获取就行 求个PHP的 代码越简洁越好 "网页中 title 标签中的内容" 不知道是什么? 举例说明吧. <title>这里是内容</title>就好比是这样 这里是有两个换行的 所以 /<title>(.+?)<\/title>/ 是抓不到的 求一个 即便有换行,空格都能抓取到的 preg_match('/<title>(.+?)<\/title>/is',$s,$m);echo $m[1]; 关于.htaccess多域名解析不同目录的问题,请帮忙 为什么我PHP函数执行问没有释放内存 关于数组的问题。 php截取数据库字符赋给变量,如何显示?谢谢~ 读取无限级分类问题 各位兄弟急、急、急、急、急!!!!! mysql如何在已有的表中增添一个属性 求救 php程序里面为什么不能上传文件了??急问一个问题!在线等! php新手上路问几个问题,请帮忙介绍? 急,怎么没有人回答我这个问题呢????从其它WEB网站上提取数据 关于form表单验证未通过却提交的问题 求一正则匹配规则写法
import urllib2
import re#configure
video_baidu = "http://video.baidu.com/"
html_output_path = "video.html"def spider_top10_videos():
try:
url_fp = urllib2.urlopen(video_baidu, None, 30)
html = url_fp.read()
except:
return False
else:
url_fp.close()
match_obj = re.search(r'<ol.*?class="top-list".*?id="index_top_search_list".*?>(.*?)</ol>', html, re.I | re.S)
if match_obj == None:
return False
match_html = match_obj.group(1)
video_urls = re.findall(r'<a.*?href="(.*?)"', match_html, re.S | re.I)
return video_urlsdef spider_video_links(url):
try:
url_fp = urllib2.urlopen(url, None, 30)
html = url_fp.read()
except:
return False
else:
url_fp.close()
match_obj = re.search(r'<span.*?class="postertitle">(.*?)</span>',
html, re.S | re.I)
if not match_obj:
return False
name = match_obj.group(1).strip()
match_obj = re.search(r'<div.*?id="VideoPcTVMenu".*?>(.*?)</div>',
html, re.S | re.I)
if not match_obj:
return False
match_html = match_obj.group(1)
match_obj = re.findall(r'<a.*?href="(.*?)".*?title="(.*?)"', match_html, re.I | re.S)
if not match_obj:
return False
return {"name":name, "list":match_obj}if __name__ == "__main__":
video_urls = spider_top10_videos()
if not video_urls:
exit
else:
with open(html_output_path, "w") as fp_html:
del video_urls[0]
fp_html.write('<html><head><meta http-equiv="Content-Type" content="text/html;charset=gbk"/>\
</head><body><table border="1">')
for url in video_urls:
video = spider_video_links(url)
if not video:
continue
fp_html.write("<tr><td>" + video['name'] +
'</td><td><table border="1">')
for item in video['list']:
fp_html.write('<tr><td><a href="http://video.baidu.com' + item[0] + '">' + item[1]
+ "</a></td></tr>")
fp_html.write("</table></td></tr>")
fp_html.write("</table></body></html>")
这里是内容
</title>
就好比是这样 这里是有两个换行的 所以 /<title>(.+?)<\/title>/ 是抓不到的
求一个 即便有换行,空格都能抓取到的
echo $m[1];