﻿# -*- coding:utf-8 -*-
import urllib
try:
    import urllib.request as urllib2
    import urllib.parse 
    from requests.auth import HTTPBasicAuth
except ImportError:
    import urllib2
import re

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

page = 1
url = 'https://www.qiushibaike.com/hot/' + str(page)
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
try:
    request = urllib2.Request(url,headers = headers)
    response = urllib2.urlopen(request)
    content_gbk = response.read().decode('utf-8', 'ignore').encode("GBK", 'ignore')
    content = content_gbk.decode('GBK', 'ignore').replace("\n\n","");
    #print(content)
    """
        现在正则表达式在这里稍作说明
        1）.*? 是一个固定的搭配，.和*代表可以匹配任意无限多个字符，加上？表示使用非贪婪模式进行匹配，
            也就是我们会尽可能短地做匹配，以后我们还会大量用到 .*? 的搭配。
        2）(.*?)代表一个分组，在这个正则表达式中我们匹配了五个分组，在后面的遍历item中，
            item[0]就代表第一个(.*?)所指代的内容，item[1]就代表第二个(.*?)所指代的内容，以此类推。
        3）re.S 标志代表在匹配时为点任意匹配模式，点 . 也可以代表换行符。
        这样我们就获取了发布人，发布时间，发布内容，附加图片以及点赞数。
        """
    pattern = re.compile('<div.*?author.*?">.*?<a.*?<img.*?<h2>(.*?)</h2>.*?<div.*?'+
                         'content">(.*?)</div>.*?<!--(.*?)-->.*?<div class="stats.*?class="number">(.*?)</i>',re.S)
    #pattern = re.compile('<span>(.*?)</span>',re.S)
    items = re.findall(pattern,content)
    for item in items:
        #print(item)
        haveImg = re.search("img",item[3])
        if not haveImg:
            #print(item[0])
            print(item[0],item[1],item[2],item[3])
            
    #print(items)
    #for item in items:
    #    print(item)



            #print(item[0],item[1],item[2],item[4])
except urllib.error.URLError as e:
    if hasattr(e,"code"):
        print(e.code)
    if hasattr(e,"reason"):
        print(e.reason)
