Python爬取糗事百科段子

凌浩雨發表於2018-08-31
#!/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
"%item[2])
 
except urllib2.URLError,e:
    if hasattr(e,`code`):
        print e.code
    if hasattr(e,`reaon`):
        print e.reason

原文地址


相關文章