类装饰器爬取段子

import requests
from lxml import etree


class Request(object):
    """请求类"""

    def __init__(self, func):
        self.func = func

    def __call__(self, url, headers, data=None):
        resp = requests.get(url, headers=headers)
        resp.encoding = resp.apparent_encoding  # 设置响应的编码
        content = resp.text
        self.func(content)


@Request # get_content=Request(get_content) 对象是否可调用取决于__call__
def get_content(content):
	"""解析网页内容"""
    htm = etree.HTML(content)
    div_list = htm.xpath('//div[@class="one-cont"]')
    for div in div_list:
        item  = dict()
        item["nick_name"] = div.xpath('.//i/text()')[0]
        item['href'] = ''.join(['https://www.xiaohua.com',div.xpath('.//a/@href')[0]])
        item['con']= div.xpath('.//p[@class="fonts"]/a/text()')[0]
        print(item)
num = 1
while num <=100:
    url = f"https://www.xiaohua.com/duanzi/?page={num}"
    headers = {'User-Agent': "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}
    get_content(url, headers=headers)
    num+=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值