python爬虫实践之爬取笑话段子

目录

概述

准备

所需模块

涉及知识点

运行效果

完成爬虫

1. 分析网页

2. 爬虫代码


概述

爬取笑话段子。

准备

所需模块

  • re
  • requests
  • lxml

涉及知识点

  • python基础
  • requests模块基础
  • re模块基础
  • xpath表达式基础

运行效果

控制台打印:

python爬虫实践之爬取笑话段子_第1张图片

完成爬虫

1. 分析网页

打开笑话大全,按F12分析网页

第一页的URL是:http://www.lovehhy.net/Joke/Detail/QSBK/1

python爬虫实践之爬取笑话段子_第2张图片

第二页的URL是:http://www.lovehhy.net/Joke/Detail/QSBK/2

python爬虫实践之爬取笑话段子_第3张图片

同理第三页的URL是:http://www.lovehhy.net/Joke/Detail/QSBK/3

比较三者:

# 第1页的URL:http://www.lovehhy.net/Joke/Detail/QSBK/1
# 第2页的URL:http://www.lovehhy.net/Joke/Detail/QSBK/2
# 第3页的URL:http://www.lovehhy.net/Joke/Detail/QSBK/3
# 故可以得到请求的URL公式:url="http://www.lovehhy.net/Joke/Detail/QSBK/"+page_index
# 其中page_index为页码

因此可以根据URL获取响应得到的HTML源码,然后使用xpath表达式提取想要的数据。

2. 爬虫代码

import re

import requests
from lxml import etree

# 爬虫实战:爬取笑话段子

# 第1页的URL:http://www.lovehhy.net/Joke/Detail/QSBK/1
# 第2页的URL:http://www.lovehhy.net/Joke/Detail/QSBK/2
# 第3页的URL:http://www.lovehhy.net/Joke/Detail/QSBK/3
# 故可以得到请求的URL公式:url="http://www.lovehhy.net/Joke/Detail/QSBK/"+page_index
# 其中page_index为页码

# 打印的页数
page_num = int(input("请输入您要获取多少页笑话:"))
for index in range(1, page_num + 1):
    # 请求的URL
    url = "http://www.lovehhy.net/Joke/Detail/QSBK/" + str(index)
    # 发送请求,获取响应到的HTML源码
    response = requests.get(url).text
    # 处理换行问题,如果不处理,只会得到一行的内容
    response = re.sub("
", "", response) # 将HTML源码字符串转换成HTML对象 html = etree.HTML(response) # 获取所有笑话的标题 data_title_list = html.xpath("//div//h3/a") # 获取所有笑话的内容 data_content_list = html.xpath("//div//div[@id='endtext']") # 打印到控制台 if len(data_title_list) == len(data_content_list): for i in range(0, len(data_title_list)): print(data_title_list[i].text, "\n", data_content_list[i].text, "\n\n\n")

 

你可能感兴趣的:(#,python爬虫实践)