第一次在优快云上写博客,望大家多多关照。
代码部分主要分为四大块
“”"
这是要用到的库。
from bs4 import BeautifulSoup # 网页解析,获取数据
import re # 正则表达式,进行文字匹配
import urllib.request
import urllib.error # 指定URL,获取网络数据
import xlwt # 进行excel操作
import sqlite3 # 进行SQLite数据库操作
import json # json类型解码
import requests
import os
1.爬取网页
def ask_url(url):
"""
访问URL
:return:data
"""
# 伪装chrome的请求头
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
}
req = urllib.request.Request(url=url, headers=header)
html = ""
try:
response = urllib.request.urlopen(req)
html = response.read().decode()
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"):
print(e.reason)
return html
2.解析数据
刚开始在用正则表达式匹配的英雄的中文名,打印出来的始终是一串bytes类型数据,不能直接显示中文,后来发现匹配到的bytes数据前有一个空数据,打印不显示出来。现在暂时想到的只是将第一个数据剔除,然后剩下的转成16进制,一个个去chr()它。如果有更好的想法,欢迎留言评论。
# 正则表达式匹配查找所有英雄id
find_hero_id = re.compile(r'{"heroId":"(\d*)",') # 英雄id
find_name = re.compile(r'"name":"(.*)","alias') # 英雄名字
find_title = re.