この記事はコードレコードとしてのみ使用されます
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# Author: RuiMing Lin
# DateTime: 2021/01/25 14:50
# Description:
import requests
from pyquery import PyQuery as pq
import json
'''
r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb:以二进制只读方式打开一个文件。文件指针将会放在文件的开头。
r+:以读写方式打开一个文件。文件指针将会放在文件的开头。
rb+:以二进制读写方式打开一个文件。文件指针将会放在文件的开头。
w:以写入方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
wb:以二进制写入方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
w+:以读写方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
wb+:以二进制读写格式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
a:以追加方式打开一个文件。如果该文件已存在,文件指针将会放在文件结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,则创建新文件来写入。
ab:以二进制追加方式打开一个文件。如果该文件已存在,则文件指针将会放在文件结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,则创建新文件来写入。
a+:以读写方式打开一个文件。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,则创建新文件来读写。
ab+:以二进制追加方式打开一个文件。如果该文件已存在,则文件指针将会放在文件结尾。如果该文件不存在,则创建新文件用于读写。
'''
# 爬取页面的方法
def get_html(page):
url = "https://nba.hupu.com/stats/players/pts/" + str(page)
response = requests.get(url=url)
if response.status_code == 200:
return response.text
else:
return None
def scrape_html_1(i):
html = get_html(i)
doc = pq(html)
trs = doc.find("table tr:not(:first-child)").items()
for tr in trs:
name = tr.find("td:nth-child(2)").text()
team = tr.find("td:nth-child(3)").text()
score = tr.find("td:nth-child(4)").text()
rate = tr.find("td:nth-child(6)").text()
yield {
'名字': name,
'队伍': team,
'得分': score,
'命中率': rate
}
# 爬取完是一个迭代器,使用extend()会遍历迭代器加到results这个列表中
flag = False
# flag = True
if flag:
results = []
for i in range(3):
results.extend(scrape_html_1(i + 1))
print(len(results))
# 查看数据
flag = False
# flag = True
if flag:
results = []
for i in range(3):
results.extend(scrape_html_1(i + 1))
print(results[0].get("名字"))
# 将json持久化到本地
flag = False
# flag = True
if flag:
results = []
for i in range(3):
results.extend(scrape_html_1(i + 1))
json.dump(results, open('files/data.json', 'a+', encoding='utf-8'), ensure_ascii=False, indent=2)
# 读取本地json文件
flag = False
flag = True
if flag:
with open('files/data.json', 'r', encoding='utf-8') as file:
results = json.load(file)
print(results)