一、前言
其实在selenium中已经整合了部分爬虫,这里我单独拧出来讲。
二、数据清洗与爬虫处理
在得到数据之后,我们需要把数据筛出想要的部分,比如说我希望得到一个目标玩家ID的名单,那么以下爬虫就是收集榜单玩家的写法,然而实际上,这个方法同样可以在selenium中实现。
import requests
import re
def playerID(): #收集榜单玩家
url ="http://rank.kongzhong.com/Data/wowstopplayer/4276041424.json"
header ={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
urlget = requests.get(url,headers = header) #伪装浏览器
urlget.encoding ="utf-8" #存在编码问题
irltext =urlget.text
#compile = re.compile("<td>(..)</td>\s<td>(\d)</td>.*?target =\"_blank\">(.*?)</a>")
compile = re.compile("\"nick\":\"(.*?)\",")
player_text = re.findall(compile,irltext)
print(player_text)
for item in player_text:
with open("playerID","a",encoding="utf-8") as file:
file.write(item)
file.write("\n")
playerID()
实际上爬虫最重要的工作是数据清洗,我们看看这个
with open("testdata","r",encoding="utf-8") as data:
datatest = data.read()
compile = re.compile("<td>(2018-\d\d-\d\d)</td>.*?<td>(\d)</td>.*?class=\"int\"\stitle=.*?<td\sclass=\"int\spercent\">([\d][\d][\d]%).*?")
#< td class ="double1 percent" > 100.0 % < / td >
#< span id = "nick" > 别扭了吃炮弹补脑啊 < / span
datafindall = re.findall(compile,datatest)
a =[x[0] for x in datafindall]
testdata里面我需要截取的是这两段,就是打#的部分,最后用a =[x[0] for x in datafindall]则可以提取出对应的各自信息,就是爬虫清洗部分。很简单吧!
网友评论