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

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

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

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

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

尝试爬取LOL英雄技能属性--01_第1张图片

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

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

尝试爬取LOL英雄技能属性--01_第2张图片

然后我们首先获取该页面的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)

尝试爬取LOL英雄技能属性--01_第3张图片

查看状态码:

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代表请求成功):

尝试爬取LOL英雄技能属性--01_第4张图片

获取别名测试:


import re
#编写正则表达式匹配名字和别名
h1 = '

暴走萝莉

' re_name = re.compile('(.*)') #用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'))

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

尝试爬取LOL英雄技能属性--01_第5张图片尝试爬取LOL英雄技能属性--01_第6张图片

所以换种方法(注意: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'))

尝试爬取LOL英雄技能属性--01_第7张图片

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

你可能感兴趣的:(Python,#python3网络爬虫)