爬虫基本逻辑
爬虫主体逻辑分为4部分
-
人工查找承载信息的网站,本项目的目标是找到有王者荣耀英雄封面的网站
-
分析网页类型(静态网页还是动态)
网页内的元素都能在网页源代码中看到,这个网页就是静态网页 -
使用网页解析器(本节课讲的正则表达式分析网页)
-
提取需要的信息
静态网页爬虫实现
实现的思路
- 使用requests库获取网页源代码
- 使用正则表达式提取全部英雄区域内容
- 使用正则表达式分别提取每个英雄封面和名称
- 使用requests下载英雄封面
1、获取网页源代码
import requests
response = requests.get('http://news.4399.com/gonglue/wzlm/yingxiong/')
response.encoding = 'gb2312'
print(response.text)
其中encoding,要根据网页源代码的charset找到。否则获取的源代码为乱码
2、获取全部英雄区域的代码
为了提取一下代码内容
<ul class="rolelist cf" id="hreo_list">
...
</ul>
需要使用正则表达式
r'<ul\sclass="rolelist\scf"\sid="hreo_list">([\s\S]*?)<\/ul>'
分割每个英雄内容
我们使用split对字符串进行分割
如
str = "a,b,c,d,e"
print(str.split(','))
所以最终代码为
import requests
import re
response = requests.get('http://news.4399.com/gonglue/wzlm/yingxiong/')
response.encoding = 'gb2312'
obj = re.search(r'<ul\sclass="rolelist\scf"\sid="hreo_list">([\s\S]*?)<\/ul>', response.text)
heros = obj.group(1).split('</li>') # 根据</li>分割
print(len(heros) - 1) # 打印英雄个数,最后一个</li>分割后会出现一个空,所以减1