python爬虫——糗事百科段子

# -*- 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">.*?

", 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">(.*?)", 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爬虫——糗事百科段子_第1张图片
第一个爬虫.PNG

你可能感兴趣的:(python爬虫——糗事百科段子)