最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
python扒取糗百网页的例子
时间:2014-02-28 编辑:简简单单 来源:一聚教程网
代码如下 | 复制代码 |
]*>.*?(?= )')first = re.compile(r' )') second = re.compile(r'(?<=>).*') def main(): recCount = 5 total = 1 ipage = 1 while True: content = urllib2.urlopen(URL + str(ipage)).readlines() alls = '' for s in content: alls += s.strip() #print first.findall(alls) ipage+=1 fs = first.findall(alls) thispage = [second.findall(s.strip())[0] for s in fs if s] for i, p in enumerate(thispage): print total,' ',p total += 1 if (i + 1) % recCount == 0: raw_input('nPress Key To Start Moren') ipage+=1 if __name__ == '__main__': main() |
代码内容比较简单,只定义了一个main函数,最后调用即可。具体几个知识点为:
findall()是re模数里的一个查找所有匹配内容的函数
strip()函数由于字符串序列删除,在未传参的情况下默认删除空白符(包括'n', 'r', 't', ' ')
enumerate()函数在对一个列表或数组既要遍历索引又要遍历元素时,会比range、list等复杂表达式去表达更优美,简洁。
注:上面python代码中有一个不太完美的地方就抓取的内容中没有把
这种换行给去掉,不过就正则实现或strip实现也很容易,相对而言php中的strip_tags显的就比较有优势(python中没有strip_tags函数)。
反思:
该例如果实用php语言去实现的话也比较简单,具体思路如下,具体代码就不再写了:
代码如下 | 复制代码 |
//获取页面内容 file_get_contents("http://www.111com.net/"); //用preg_match_all 正则匹配所有内容 preg_match_all //利用strip_tags()去除所有html标签 |
strip_tags注:很多主机上不支持file_get_contents()函数,这就需要使用php的curl去获取页面,如果使用curl的话代码会相对显的多一点。
最后对于图片进行了升级处理
代码如下 | 复制代码 |
from sgmllib import SGMLParser import urllib2 class sgm(SGMLParser): def reset(self): SGMLParser.reset(self) self.srcs=[] self.ISTRUE=True def start_div(self,artts): for k,v in artts: if v=="author": self.ISTRUE=False def end_div(self): self.ISTRUE=True def start_img(self,artts): for k,v in artts: if k=="src" and self.ISTRUE==True: self.srcs.append(v) def download(self): for src in self.srcs: f=open(src[-12:],"wb") print src img=urllib2.urlopen(src) f.write(img.read()) f.close() sgm=sgm() for page in range(1,500): url="http://www.qiushibaike.com/late/page/%s?s=4622726" % page data=urllib2.urlopen(url).read() sgm.feed(data) sgm.download() |
-
下一个: php把文件上传到远程服务器上例子