Python lxml + XPath采集网站数据

lxml是python的一个解析库,支持HTML、XML、XPath等解析方式,官方地址:https://lxml.de/
XPath教程http://www.w3school.com.cn/xpath/index.asp

案例

import urllib
import lxml.etree

class csdn_blog():
    def __init__(self):
        self.url = "https://blog.csdn.net/tmaczt/article/list/{}?orderby=UpdateTime"

    def get_html(self, url):
        html = "";
        try:
            response = urllib.request.urlopen(url)
            html = response.read()

        except Exception as err:
            print(err)

        return html

    def test_xpath(self):
        bagin_page = int(input("请输入起始页:"))
        end_page = int(input("请输入结束页:"))
        for page_no in range(bagin_page, end_page + 1):

            url_link = self.url.format(str(page_no))
            xml_content = lxml.etree.HTML(self.get_html(url_link))
            href_content = xml_content.xpath('//div[@class="article-list"]/div/p/a/@href')
            for item in href_content:
                url = item.strip();
                html = self.get_html(url);
                if (html == ""):
                    continue;
                itemcontent = lxml.etree.HTML(html)
                
                title_list = itemcontent.xpath('//div[@class="article-title-box"]/h1');
                span_list = itemcontent.xpath('//div[@class="article-bar-top"]/span');
                title = title_list[0].text;
                time = span_list[0].text;
                read_count = span_list[1].text;
                print("标题:", title)
                print("发布时间:", time)
                print(read_count)


if __name__ == "__main__":
    blogs = csdn_blog()
    blogs.test_xpath()
**解析结果**

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值