Python实践--糗事百科网页爬虫

1前言

学了一段时间Python了,总结了相关的基础知识,所以想实践一下,看看成果如何。
如下图所示,实现了一个糗事百科网页爬虫
可以下载该[Demo APK](https://raw.githubusercontent.com/zxlworking/MyApplication_in_desaysv/master/test_qsbk/test_qsbk-debug.apk" Demo APK")使用

Python实践--糗事百科网页爬虫

2获取网页内容

2.1构造请求头

模拟用户通过浏览器访问请求

user_agent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"headers = {"User-Agent":user_agent}

2.2Http请求数据

通过urllib2设置请求糗事百科某一页的数据

   try:
	   url = "http://www.qiushibaike.com/hot/page/%s" % page
       request = urllib2.Request(url, headers=headers)
       response = urllib2.urlopen(request)
       return response.read().decode("utf-8")
   except urllib2.URLError, e:
       if hasattr(e, "code"):
           print "e.code:" + e.code       if hasattr(e, "reason"):
           print "e.reason:" + e.reason

3准备正则表达式

3.1解析当前页所有用户发布的糗事

依次为:用户ID、用户头像、用户昵称、用户信息、糗事内容、糗事图片、感觉好笑的人数、评论人数

def parse_qsbk_list(self, qsbk_list):
    pattern = re.compile(
        u"""<div class="article block untagged.*?id='(.*?)'.*?.*?(.*?).*?(.*?).*?(.*?)(.*?)<div id="qiushi_counts.*?""",
        re.S)
    return re.findall(pattern, qsbk_list)

3.2解析用户是否为匿名用户

在用户信息中判断是否被注释了,如果注释了则表示匿名用户

def parse_qsbk_anonymity(self, qsbk_anonymity):
    return re.findall("", qsbk_anonymity)

3.3解析用户的性别、年龄

依次为***性别、年龄***

def parse_qsbk_author_sex_age(self, qsbk_author_sex_age):
    return re.findall("(\d+)", qsbk_author_sex_age)

3.4解析糗事内容是否包含图片

解析糗事内容中是否有img标签

def parse_qsbk_thumb(self, qsbk_thumb):
    return re.findall("", qsbk_thumb)

3.5解析好笑的人数、评论人数

依次为:好笑的人数、评论人数

def parse_qsbk_vote_comment(self, qsbk_vote_comment):
    return re.findall(u"(\d+) 好笑.*?\n.*?\n.*?\n.*?\n(\d+) 评论", qsbk_vote_comment)

3.6创建json数据结构

每一个糗事内容用字典结构mQsbkParseElement 表示,其中每一个属性用键值对方式赋值,然后放入列表mQsbkParseEleements,最后通过json.dumps转换成json数据

mQsbkParseEleements = []
    mQsbkParseElement = {}

    mQsbkParseElement["author_id"] = re.findall("\d+", qsbk_element[0])[0]
    mQsbkParseElement["author_head_img"] = "http:" + qsbk_element[1]
    mQsbkParseElement["author_name"] = qsbk_element[2]
    mQsbkParseElement["is_anonymity"] = 1
    mQsbkParseElement["author_sex"] = SEX_MAN
    mQsbkParseElement["author_age"] = 0
    mQsbkParseElement["content"] = qsbk_content
	mQsbkParseElement["has_thumb"] = 1
    mQsbkParseElement["thumb"] = "http:" + qsbk_thumb[0]
    mQsbkParseElement["vote_number"] = int(qsbk_vote_comment[0][0])
    mQsbkParseElement["comment_number"] = int(qsbk_vote_comment[0][1])
    mQsbkParseEleements.append(mQsbkParseElement)result["code"] = 0result["desc"] = "success"result["current_page"] = page
result["result"] = mQsbkParseEleements

json.dumps(result, encoding="utf-8", ensure_ascii=False)

Python实践--糗事百科网页爬虫
PS:糗事内容详情进行类似处理

4Android端获取糗事百科内容

参考Demo

Python实践--糗事百科网页爬虫

上一篇:ARM探索之旅 | 二、ARM Cortex-M 用什么指令集?


下一篇:修改浏览器中的滚动条样式