1前言
2获取网页内容2.1构造请求头学了一段时间Python了,总结了相关的基础知识,所以想实践一下,看看成果如何。
如下图所示,实现了一个糗事百科网页爬虫
可以下载该[Demo APK](https://raw.githubusercontent.com/zxlworking/MyApplication_in_desaysv/master/test_qsbk/test_qsbk-deBUG.apk" Demo APK")使用
模拟用户通过浏览器访问请求
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.reason3准备正则表达式3.1解析当前页所有用户发布的糗事
依次为:用户ID、用户头像、用户昵称、用户信息、糗事内容、糗事图片、感觉好笑的人数、评论人数
def parse_qsbk_List(self, qsbk_List): pattern = re.compile( u"""<div 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"] = pageresult["result"] = mQsbkParseEleementsJson.dumps(result, enCoding="utf-8", ensure_ascii=False)
PS:糗事内容详情进行类似处理4AndroID端获取糗事百科内容
总结参考Demo
以上是内存溢出为你收集整理的Python实践--糗事百科网页爬虫全部内容,希望文章能够帮你解决Python实践--糗事百科网页爬虫所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)