用正则表达式爬取链接和标题
来源:互联网 发布:淘宝找货神器 编辑:程序博客网 时间:2024/06/07 00:05
1.爬取中国大数据首页的链接和标题
2.出现好多错误,特别是正则表达式
爬取的样式为:
部分源代码:
#coding:utf-8import reimport urllib#获取网页def getHtml(url): page=urllib.urlopen(url) html=page.read() return html#用正则匹配相应的链接和标题def getText(html): reg=r'</span><a href="((YeJieDongTai|YingYongAnLi|JieJueFangAn|Hadoop|HBase|QiTa|JiShuBoKe)/\d{4,5}\.html)"(.*?)>(.*?)</a>' textre=re.compile(reg) textlist=re.finditer(textre,html) #print type(textlist)测试返回内容的类型,注意finditer和findall的区别 return textlisturl='http://www.thebigdata.cn/'html=getHtml(url)list=getText(html)#将获取的内容写入文件a=open(r"D:\Python test\restart.txt",'a+')for item in list: a.write(item.group(1)+item.group(4)+'\n') #当以列表形式返回时,读取方式应为: #a.write(item[1]+item[4]+'\n') a.close()
小某说:
分享一下自己所犯的奇葩的错误。
1.刚开始写的时候,完完全全按照爬取图片的格式来的,出现一系列错误,后来发现这是不可行的。主要是对urlretrieve()的用法没有掌握清楚。urlretrieve()是将url定位到的html文件下载到本地的磁盘中,这次爬取的内容需要写入文件中。关于urllib模块中的方法可以参考
http://www.cnblogs.com/sysu-blackbear/p/3629420.html
2.然后改变方法重新爬取,正则又出现了很多错误
reg=r'target="_blank" title=(.*?)>'这个正则爬取出来的内容有缺失,是由于源代码中有的title是写在title=“”的引号里面的,而有的写在了外面。于是便认为匹配时title可有可无,便进行更改
reg=r'target="_blank" title?=?(.*?)>'这种写法好像很搞笑,主要是没有掌握正则中“?”的用法
?:可以表示匹配零次或一次,即前面的内容可有可无;也可以表示非贪婪匹配。重点在于后者。
常用的非贪婪匹配模式有:
- *?重复任意次,但尽可能少重复
- +?重复一次或更多次,但尽可能少重复
3.总之,正则匹配错误还很多。匹配成功后,如上面代码中所示,写入文件时由于有多个分组便又出现错误。主要是findall()和finditer()的区别:
findall():返回所有匹配的字符串,并存为列表,存入文件时使用列表的读取方法。
finditer():返回一个迭代器,存入文件时要调用group()
吼吼哈哈,补上昨天的博客,好开森,可能有写的不好的地方,小某就先闪啦!!
0 0
- 用正则表达式爬取链接和标题
- 正则表达式取HTTP链接
- 提取网页中链接和标题的正则表达式
- 提取网页中链接和标题的正则表达式
- 初用正则表达式爬取图片
- Python爬虫实例(4)-用urllib、re和正则表达式爬取网页图片
- 用HttpWebRequest和正则表达式提取网页中的链接
- 捉取dmoztools.net的标题,链接和描述
- 标题: 正则表达式语法
- 在C#中如何利用正则表达式来获取网页中的所有链接的链接标题
- Jython使用jsoup爬取网页标题与链接信息
- python3.5 爬取bing搜索结果页面标题、链接
- Node.js爬取十九大报告标题链接
- 正则表达式取字符串
- 正则表达式取值
- 正则表达式取 [ ]
- python爬取博客标题和访问量
- 用正则表达式转换http地址链接
- shell入门学习
- linux makefile教程
- hdu 1102 最小生成树 prim
- 你必须要坚信所有的程序都是有代码构成的!!!
- strlen的使用问题
- 用正则表达式爬取链接和标题
- 自定义UINavigationController的后退按钮标题
- Java 异常处理机制(一)
- yii2.0 Activeform表单部分组件使用方法
- 修改navigationItem.backBarButtonItem.title的值无效的解决办法
- URAL 1297 Palindrome (回文+中心扩展)
- [Leetcode]Binary Tree Right Side View(TAT)
- 实验室搭建mongodb集群准备工作
- 基于SAE服务器的微信JsSDK测试