def get_json(character_arr): data={} for i in set(character_arr): print(i) url=r'https://baike.baidu.com/item/'+i url = quote(url, safe = string.printable) req = request.Request(url, headers=headers) response = request.urlopen(req, timeout=20) try: html = response.read().decode('utf-8') soup = BeautifulSoup(html, 'html.parser', ) res = soup.find(class_="summary-pic") pic_name = str(i) + '.jpg' img_src = res.find('img').get('src') request.urlretrieve(img_src,pic_name) except : print("找不到图片") res_key=soup.find_all(class_ ="basicInfo-item name") res_val=soup.find_all(class_ ="basicInfo-item value") key=[ik.get_text().strip().replace("\n","、") for ik in res_key] value = [iv.get_text().strip().replace("\n", "、") for iv in res_val] item=dict(zip(key,value)) data[str(i)]=item if not os.path.exists("../json"): os.mkdir("../json") f = codecs.open('../json/data.json','w','utf-8') f.write(json.dumps(data, ensure_ascii=False)) if __name__ == "__main__": character_arr=get_character() os.chdir(os.path.join(os.getcwd(), 'images')) get_json(character_arr)
时间: 2024-04-17 08:22:53 浏览: 26
这段代码看起来是一个从百度百科获取角色信息并保存为JSON文件的函数。它的主要步骤如下:
1. 导入必要的模块和库。
2. 定义一个函数`get_json`,它接受一个角色数组作为参数。
3. 创建一个空的字典`data`,用于保存角色信息。
4. 对角色数组去重后进行迭代。
5. 构造百度百科的URL,并对URL进行编码。
6. 发送HTTP请求获取网页内容。
7. 使用BeautifulSoup解析网页内容。
8. 查找角色的概述图片,并保存为以角色名命名的JPG文件。
9. 查找角色的基本信息,并以字典形式保存到`data`字典中。
10. 如果不存在名为"../json"的文件夹,则创建该文件夹。
11. 打开一个JSON文件,并将`data`字典以JSON格式写入文件中。
12. 在`if __name__ == "__main__":`条件下,获取角色数组并切换到存储图片的文件夹,最后调用`get_json`函数。
请注意,代码中使用了一些未导入的模块和库,例如`quote`、`request`、`headers`、`BeautifulSoup`、`string`、`os`、`json`和`codecs`。你需要自行导入这些模块并设置相应的参数。此外,还需要定义`get_character()`函数来获取角色数组的值。
相关问题
import collections def solve_method(n: int) -> None: asc = True list_ = collections.deque() x = 1 for i in range(1, n + 1): arr = [0] * i if asc: for j in range(i): arr[j] = x x += 1 else: for j in range(i - 1, -1, -1): arr[j] = x x += 1 list_.appendleft(arr) asc = not asc res = [] head = "" for ints in list_: content = head for j in range(len(ints)): num = ints[j] content += str(num) content += "*" * (4 - len(str(num))) if j != len(ints) - 1: content += " " res.append(content) head += " " for s in reversed(res): print(s) if __name__ == "__main__": n = int(input()) solve_method(n) 改写以上代码,python
import collections
def solve_method(n):
asc = True
list_ = collections.deque()
x = 1
for i in range(1, n + 1):
arr = [0] * i
if asc:
for j in range(i):
arr[j] = x
x += 1
else:
for j in range(i - 1, -1, -1):
arr[j] = x
x += 1
list_.appendleft(arr)
asc = not asc
res = []
head = ""
for ints in list_:
content = head
for j in range(len(ints)):
num = ints[j]
content += str(num)
content += "*" * (4 - len(str(num)))
if j != len(ints) - 1:
content += " "
res.append(content)
head += " "
for s in reversed(res):
print(s)
if __name__ == "__main__":
n = int(input())
solve_method(n)
def merge_sort(arr): if len(arr) < 2: return arr mid = len(arr) // 2 left_arr = arr[:mid] right_arr = arr[mid:] left_arr = merge_sort(left_arr) right_arr = merge_sort(right_arr) return merge(left_arr, right_arr)def merge(left_arr, right_arr): result = [] i = j = 0 while i < len(left_arr) and j < len(right_arr): if left_arr[i] <= right_arr[j]: result.append(left_arr[i]) i += 1 else: result.append(right_arr[j]) j += 1 result += left_arr[i:] result += right_arr[j:] return result怎样运行
这是一个 Python 代码实现的归并排序算法。你可以按照以下步骤运行这段代码:
1. 打开 Python 环境,例如在命令行中输入 `python`。
2. 将代码复制粘贴到 Python 环境中。
3. 定义一个列表变量 `arr`,表示需要排序的列表。例如,`arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]`。
4. 调用 `merge_sort` 函数,将 `arr` 作为参数传入。例如,`sorted_arr = merge_sort(arr)`。
5. 打印排序后的结果。例如,`print(sorted_arr)`。
这样,你就可以得到 `arr` 列表按照从小到大的顺序排列后的结果。