这篇爬虫和糗事百科是一样的方法,要注意的有两点:
1,正则表达式要更具网页的实时信息进行查看,打开F12查看源代码即可,并不难。
2,当时在检查的时候直接print content出现了符号码,改成for循环之后得出了正确的结果。
# -*- coding:utf-8 -*-
import urllib
import urllib2
import re
# 简书爬虫类
class JianShu:
#初始化
def __init__(self):
self.user_agent='Mozilla/5.0 (X11; Linux x86_64)'
self.headers={'User-Agent' : self.user_agent}
#得到一页的html方法
def getPage(self):
try:
url='http://www.jianshu.com/'
request=urllib2.Request(url,headers=self.headers)
response=urllib2.urlopen(request)
pageCode=response.read().decode('utf-8')
return pageCode
except urllib2.URLError, e:
if hasattr(e,"reason"):
print u"连接简书失败,错误原因", e.reason
return None
#得到要匹配的内容
def getPageItems(self):
pageCode=self.getPage()
if not pageCode:
print "页面加载失败"
return None
pattern=re.compile('<a class="title".*?>(.*?)</a>.*?<p class="abstract">(.*?)</p>.*?<div class="meta">.*?<i class="iconfont ic.*?/i>(.*?)</a>',re.S)
items=re.findall(pattern,pageCode)
return items
# 开始
def start(self):
content=self.getPageItems()
for item in content:
print item[0],item[1],item[2]
# print content
spider=JianShu()
spider.start()
def start(self):
content=self.getPageItems()
for item in content:
print item[0],item[1],item[2]
# print content
def start(self):
content=self.getPageItems()
#for item in content:
#print item[0],item[1],item[2]
print content