XPath 爬取糗事百科

本文分享了一个使用Python进行糗事百科网站爬取的实战案例,详细介绍了如何发送请求、处理Cookies、解析网页内容并保存数据的过程。通过XPath抓取图片源链接、用户名和等级信息,展示了数据抓取的基本技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import urllib.request
import urllib.parse
import http.cookiejar
from lxml import etree

def create_request(page):
    url = 'https://www.qiushibaike.com/text/page/' + str(page) + '/'
    headers = {
            'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
    }
    request = urllib.request.Request(url=url, headers=headers)
    return request

def save_content(request):
    ck = http.cookiejar.CookieJar()
    handler = urllib.request.HTTPCookieProcessor(ck)
    opener = urllib.request.build_opener(handler)
    response = opener.open(request)
    content = response.read().decode('utf-8')
    return content

def get_xpath(content):
    tree = etree.HTML(content)
    src_list = tree.xpath('//div[@id="content-left"]/div/div//img/@src')
    alt_list = tree.xpath('//div[@id="content-left"]/div/div//img/@alt')
    level_list = tree.xpath("//div[@id='content-left']/div/div/div/text()")
    if len(src_list) == len(alt_list):
        for i in range(len(src_list)):
            src = 'https:' + src_list[i]
            print(src)
            alt = alt_list[i]
            if alt == '匿名用户':
                level_list.insert(i, '无等级')
            level = level_list[i]
            data = '头像:' + src + ' ' + '用户名:' + alt + ' ' + '等级:' + level + '\n'

            with open('user_info.txt', 'a', encoding='utf-8')as fp:
                fp.write(data)

if __name__ == '__main__':
    request = create_request(1)
    content = save_content(request)
    get_xpath(content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值