尝试爬取LOL英雄技能属性--01

首先我们找到一个LOL英雄的全部展示的页面:http://lol.kuai8.com/hero/ 恕瑞玛,your king has return ! hah

hah金克丝长得不错,点击一下http://lol.kuai8.com/hero/3.html

摁一下键盘F12出现页面源码:

点击一下左上角的框住的这个按钮,然后在左边显示页面选择目标右边就会自动定位相应的源码

比如我们在左边点击金克丝的名字,右边就自动定位到了相应的源码

经查看该网页请求方式为get

然后我们首先获取该页面的html源码:

import requests
from pyquery import PyQuery as pq

#请求网站数据request的get()方法可以实现get请求,
#当然也可以用request的post()、put()、dellete()方法实现post、put、delete等请求
html = requests.get('http://lol.kuai8.com/hero/138.html').content.decode('utf-8')
#现在获取了html页面的源码
print (html)

查看状态码:

import requests


#请求网站数据request的get()方法可以实现get请求,
#当然也可以用request的post()、put()、dellete()方法实现post、put、delete等请求
html = requests.get('http://lol.kuai8.com/hero/3.html')
#现在获取了html页面的源码
print (html.status_code)

运行结果(200代表请求成功):

获取别名测试:


import re
#编写正则表达式匹配名字和别名
h1 = '<h1 id="DATAname">暴走萝莉</h1>'
re_name = re.compile('<h1.*DATAname.*>(.*)</h1>')
#用match方法获取DATAname
DATAname = re.match(re_name,h1)
#group()输出完整结果,group(1)输出正则表达式中第一个被()包裹的匹配结果
print(DATAname.group(1))

运行结果:

测试XPath

import requests
import re
from lxml import etree
#请求网站数据request的get()方法可以实现get请求,
#当然也可以用request的post()、put()、dellete()方法实现post、put、delete等请求
html = requests.get('http://lol.kuai8.com/hero/3.html').content.decode('utf-8')
#现在获取了html页面的源码
#调用HTML类进行初始化,构造一个XPath解析对象(etree模块可以自动修正HTML文本)
html_xpath = etree.HTML(html)
result = etree.tostring(html_xpath)
#调用toString()方法输出html代码,但结果是bytes类型,利用decode()方法将其转成str类型
print(result.decode('utf-8'))

这样还是有个中文乱码的问题

所以换种方法(注意:etree.HTMLParse()括号里不加编码集的话中文乱码问题有时也可以解决):

import requests
import re
from lxml import etree
#请求网站数据request的get()方法可以实现get请求,
#当然也可以用request的post()、put()、dellete()方法实现post、put、delete等请求
html = requests.get('http://lol.kuai8.com/hero/3.html').content.decode('utf-8')
#现在获取了html页面的源码
#用etree.parse
html_xpath = etree.parse(html,etree.HTMLParser(encoding='gbk'))
result = etree.tostring(html_xpath)
#调用toString()方法输出html代码,但结果是bytes类型,利用decode()方法将其转成str类型
print(result.decode('utf-8'))

网页结构太复杂了,Xpath好像适合结构简单清晰的网页结构,遂放弃...接下来试试Beautiful Soup

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值