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()</code></pre>