用python的curl和lxml来抓取和分析网页内容

本文介绍如何使用Curl和Lxml这两个强大的Python库,通过URL和相对路径处理技术,实现从指定网站抓取链接的功能。重点讲解了Curl的基本用法、Lxml的html解析能力,以及urlparse的urljoin函数在处理相对路径时的优势。通过实例代码展示了整个流程,并强调了在实际应用中避免XML工具与HTML非标准情况冲突的重要性。

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

    Curl是一个强大的URL语法的客户端,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS等多种协议。

    Lxml是python一个非常好用的xml模块,同时支持html的处理。虽然html是xml的一个子集,但是有些html网页写的不够标准,例如写了<option>但是又没写</option>,这种情况下使用xml工具来分析绝对是会报错的,但是html工具通常就可以很好的兼容这些非标准的情况。

    用urlparse的urljoin可以很好的帮你处理相对路径问题。

    如果你的python里面缺少了curl或者lxml等模块,可以到pypi去找。

#!/usr/bin/env python
# coding: utf-8

import os
import sys
import urlparse

import lxml.html
import lxml.etree
import curl

def download(url):
    c = curl.Curl()
    c.set_timeout(8)
    c.get(url)
    return c.body()

def parse_url():
    base_url = 'http://finance.ce.cn/stock/'
    ht_string = download(base_url)
    ht_doc = lxml.html.fromstring(ht_string, base_url)
    elms = ht_doc.xpath("//li[@style='font-size:15px; line-height:29px;']/a")
    for i in elms:
        print urlparse.urljoin(base_url, i.get('href'))
        print lxml.etree.tostring(i, encoding='utf-8')

if __name__ == '__main__':
    parse_url()

 

转载于:https://www.cnblogs.com/firemeteorx/p/3328677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值