#!/usr/bin/python
# -*- coding:utf-8 -*-
import urllib
import urllib2
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
page = 1
url = 'http://www.qiushibaike.com/hot/page/' + str(page)
user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'
headers = {'User-Agent':user_agent}
try:
request = urllib2.Request(url,headers = headers)
response = urllib2.urlopen(request)
# print response.read()
######_match_ string
content = response.read().decode('utf-8')
# 其中 (.*?)为匹配的内容
# 如果对正则不是很熟的同学,可以参考以下:
# 1. “.”是通配符,”*”表示匹配0次或任意次,”?”表示非贪婪匹配,.*?组合在一起则表示尽可能短地做匹配。
# 2. (.*?)代表一个分组,或者说一个捕获组。
# 3. re.S 标志代表在匹配时为点任意匹配模式,点 . 也可以代表换行符。
pattern = re.compile(r'<div.*?author clearfix".*?<img.*?<h2>(.*?)</h2>.*?<div.*?'+
'content">.*?<span>(.*?)</span>.*?<div class="stats.*?class="number">(.*?)</i>',re.S)
items = re.findall(pattern,content)
# print("%s"%items)
for item in items:
print("auther:%s"%item[0])
print("content:%s"%item[1])
print("likes:%s\n"%item[2])
except urllib2.URLError,e:
if hasattr(e,'code'):
print e.code
if hasattr(e,'reaon'):
print e.reason
原文地址