笑话大全爬虫实战笔记[xiaohua.zol.com.cn]

免责声明:本文所记录的技术手段及实现过程,仅作为爬虫技术学习使用,不对任何人完全或部分地依据本文的全部或部分内容从事的任何事情和因其任何作为或不作为造成的后果承担任何责任。

爬取需求:通过百度搜索关键字:笑话,搜索结果的第一项就是【xiaohua.zol.com.cn】,锁定从该站上爬取最新的笑话信息,爬取前5页笑话标题、内容等信息;

爬取工具:chrome浏览器、pycharm

Python库:requests、BeautifulSoup

01

网站结构分析

通过输入url【xiaohua.zol.com.cn】,打开笑话大全网站,点击【最新笑话按钮】,打开最新笑话页面:

通过翻页按钮,找到每页对应的url链接信息:

https://xiaohua.zol.com.cn/new/1.html

https://xiaohua.zol.com.cn/new/2.html

https://xiaohua.zol.com.cn/new/3.html

通过在【查看全文】按钮上右键,选择【检查】,找到笑话详情url提取信息:

通过上述页面分析,【article-list】是列表,包括了所有的笑话信息【article-summary】,每个笑话信息里面,可以从【article-title】或者【article-commentbar articleCommentbar clearfix】拿到笑话详情页面url。

02

爬取笑话大全详情页URL

根据上面分析的网站结构,开始创建python工程并编写代码:

import requests

from bs4 import BeautifulSoup



# 模拟浏览器请求头

headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'

}



xiao_hua_url = 'https://xiaohua.zol.com.cn/new/{}.html'



def start_xiao_hua(pages):

    # 从第一页开始,爬取到指定页

    for page in range(1, pages):

        # 访问url

        main_html = requests.get(xiao_hua_url.format(page), headers=headers)

        o_soup = BeautifulSoup(main_html.text, 'html.parser')

        v_xiao_hua_list = o_soup.select('.article-summary')

        for v_xiao_hua_item in v_xiao_hua_list:

            # 通过标题获取笑话详情的url

            v_xiao_hua_url = v_xiao_hua_item.select('.article-title a')[0]['href']

            print(v_xiao_hua_url)

start_xiao_hua(5)

运行代码,结果如下:

已经拿到了笑话详情的url,但是为相对路径,需要拼接主url

v_xiao_hua_url = 'https://xiaohua.zol.com.cn' + v_xiao_hua_url

运行代码,结果如下:

笑话详情url爬取成功!

03

爬取笑话详情页标题

继续编写代码,打开详情页的url,在打开的详情页提取笑话的标题

def detial_page(url):

    # 访问详情页url

    detial_html = requests.get(url, headers=headers)

    detial_soup = BeautifulSoup(detial_html.text, 'html.parser')

分析详情页,笑话标题定位信息为:article-title

编写代码解析标题:

v_title = detial_soup.select('.article-title')[0].text

print(v_title)

运行代码,结果如下:

笑话标题爬取成功!

04

爬取笑话详情页内容

分析笑话详情页的内容,内容信息的关键定位信息为:article-text
 

编写代码,提取笑话内容信息

v_content_list = detial_soup.select('.article-text p')
v_content = ''
for v_content_item in v_content_list:
    v_content = v_content + v_content_item.text
print(v_title, v_content)

运行代码,结果如下:

爬取笑话内容信息成功!

所有示例代码均可通过微信公众号回复关键字【pachong23】下载!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值