使用python的LXML进行数据解析

举报
laical1 发表于 2021/07/02 16:44:20 2021/07/02
【摘要】 使用lxml提取网页数据的流程

python语言我们可以通过lxml进行解析,所以想要在网页解析HTML和XML从而采集数据,通过lxml解析网站数据,爬虫采集的数据就容易很多。lxml是速度是非常的快。

使用lxml提取网页数据的流程

使用lxml只需要两步就能解析出网站的数据:

1、用lxml把网页进行解析出来。通过这个过程,我们一般选择lxml.html来完成

2、使用xpath解析,然后采集所需要的数据。

想要提取整个网站所需要的数据,这里的整个抓取关键是网络性能,而不是程序性能。所以不能用异步把程序性能提高了,如果采用异步提取的话,这样抓取的频率提高了,反而更容易被网站限制。

我们可以通过实例来解析一下HTML代码:

    #! -*- encoding:utf-8 -*-

    import aiohttp, asyncio


    targetUrl = "http://httpbin.org/ip"

    # 代理服务器(产品官网 www.16yun.cn)
    proxyHost = "t.16yun.cn"
    proxyPort = "31111"

    # 代理验证信息
    proxyUser = "username"
    proxyPass = "password"

    proxyServer = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
        "host" : proxyHost,
        "port" : proxyPort,
        "user" : proxyUser,
        "pass" : proxyPass,
    }

    userAgent = "Chrome/83.0.4103.61"

    async def entry():
        conn = aiohttp.TCPConnector(verify_ssl=False)

        async with aiohttp.ClientSession(headers={"User-Agent": userAgent}, connector=conn) as session:
            async with session.get(targetUrl, proxy=proxyServer) as resp:
                body = await resp.read()

                print(resp.status)
                print(body)

    loop = asyncio.get_event_loop()
    loop.run_until_complete(entry())
    loop.run_forever()
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。