if not os.path.exists("D:/Rourou/Study/3.2/ZHSJ/KGQA_HLM-master/KGQA_HLM-master/spider/images"): os.mkdir("D:/Rourou/Study/3.2/ZHSJ/KGQA_HLM-master/KGQA_HLM-master/spider/images") headers = {} headers["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36" 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 12:22:57 浏览: 91
SD-read-write.zip_SD-write_sd wride_安卓
这段代码的作用是根据给定的字符列表,从百度百科上获取与这些字符相关的信息和图片,并将获取到的数据保存为一个JSON文件。具体来说,它首先判断指定路径下是否存在名为"images"的文件夹,如果不存在则创建该文件夹。然后,设置了一个请求头,用于模拟浏览器发送请求。接下来,它根据字符列表循环处理每个字符。对于每个字符,它构建了一个URL,然后使用该URL发送请求并获取响应。然后,它解析响应的HTML内容,提取出相关的图片链接和其他信息。接着,它使用`request.urlretrieve()`方法下载图片并保存到本地。最后,它将提取到的信息保存到一个字典中,并将该字典保存为一个JSON文件。如果指定路径下不存在名为"json"的文件夹,则创建该文件夹。最后,它使用codecs库打开一个文件,并将字典转换为JSON格式写入该文件中。
阅读全文