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

目录

概述

准备

所需模块

涉及知识点

运行效果

完成爬虫

1. 分析网页

2. 爬虫代码


概述

爬取笑话段子。

准备

所需模块

  • re
  • requests
  • lxml

涉及知识点

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

运行效果

控制台打印:

完成爬虫

1. 分析网页

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

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

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

同理第三页的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("<br />", "", 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")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值