# -*- coding: utf-8 -*-
import re # re模块使 Python 语言拥有全部的正则表达式功能。
import requests # 主要用于接收客户端发送而来的请求信息,客户端的请求信息被封装在request对象中
import html # 用来解 析html的模块。它可以分析出html里面的标签、数据等等
import time # 时间处理有关的模块def crawl_joke_list(page=1):
res = requests.get("http://www.qiushibaike.com/text/page/" + str(page)) # get方式提取URL信息
body = html.unescape(res.text).replace("
", "\n") # 特殊转义字符转换 换行替换成\n
pattern = re.compile("<div class="article block untagged mb15.*?<div class="content">.*?</div>", re.S)
#compile()函数会把一个表达式字符串转化成为一个RegexObject re.S连换行符都匹配
m = re.findall(pattern,body) # re.findall(条件,内容)字符串正则匹配 ---------重点
user_pattern = re.compile("<div class="author clearfix">.*?<h2>(.*?)</h2>", re.S)
# 抽取用户名的正则
content_pattern = re.compile("<div class="content">(.*?)</*div>", re.S)
*# 抽取段子的正则
for joke in m:
user = user_pattern.findall(joke)# 提取用户名
output = []
if len(user) > 0:
output.append(user[0])# 把user数组里的第一个用户名加到output数组里
content = content_pattern.findall(joke)#提取段子
if len(content) > 0:
output.append(content[0].replace("\n", ""))
# 把content数组里的第一个用户名加到output数组里 并把换行去掉
print("\t\t\t".join(output))
*# join() 方法用于将序列(数组)中的元素以指定的字符连接生成一个新的字符串
time.sleep(1)
if name == 'main':
for i in range(1, 36):
crawl_joke_list(i)
python爬虫——糗事百科段子
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...