使用python的LXML进行数据解析

232 阅读1分钟

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()