爬取网站的步骤:
- 设置爬取目标(目标网站,目标数据)
- 分析目标网站(待爬取页面,待爬取数据)
- 批量下载HTML(使用requests库实现 点击requests介绍网站)
- 实现HTML解析,得到目标数据(BeautifulSoup库解析点击获取beautifulsoup介绍网站)
- 将结果数据存储
在这里,我就爬取一下我的blog博客,来回忆熟悉一下爬虫吧
# -*- coding: utf-8 -*-"""Created on Tue Mar 29 19:45:35 2022@author: lmj"""import requestsfrom bs4 import BeautifulSoupimport pprintimport jsondef download_all_html():# 下载所有列表页面的html,用于后续分析htmls = []for idx in range(1):url = f"https://liumengjieabc.gitee.io/page/{idx+2}/"# 请求url,请求成功是200r = requests.get(url)r.encoding = "utf-8"if r.status_code != 200:raise Exception("error")htmls.append(r.text)return htmlshtmls = download_all_html()def parse_single_html(html):# 用html.parser解析单个HTML,得到数据soup = BeautifulSoup(html,'html.parser')articles = soup.find_all("div",class_="recent-post-item")datas = []for article in articles:# 查找超链接title_node = (article# .find("h2",class_="entry-title")# .find("a").find("div",class_="recent-post-info").find("a"))# 获取title_node超链接的标题title = title_node.get_text()# 获取title_node超链接的urllink = title_node["href"]datas.append(# 整理成字典{"title":title,"link":'https://liumengjieabc.gitee.io/' + link})return datas;# 执行所有的HTML页面的解析all_datas =[]for html in htmls:all_datas.extend(parse_single_html(html))print(all_datas)filename='blog.json'with open(filename,'w') as file_obj:json.dump(all_datas,file_obj)print("写入成功")


先用我的博客实验了一下,成功!
上传的作业,爬一个网页的新闻列表,emmm,现在才完成,虽迟但到!
# -*- coding: utf-8 -*-"""Created on Tue Mar 29 19:45:35 2022@author: lmj"""import requestsfrom bs4 import BeautifulSoupimport pprintimport jsondef download_all_html():# 下载所有列表页面的html,用于后续分析htmls = []for idx in range(10):url = f"https://sites.lynu.edu.cn/xxjsxy/xyxw/{idx+1}.htm"print(url)# 请求url,请求成功是200r = requests.get(url)r.encoding = "utf-8"if r.status_code != 200:raise Exception("error")htmls.append(r.text)return htmlshtmls = download_all_html()def parse_single_html(html):# 用html.parser解析单个HTML,得到数据soup = BeautifulSoup(html,'html.parser')articles = soup.find_all("ul",class_="article_list")datas = []for article in articles:items = article.find_all("li")for item in items:title_node = (item.find("a"))# 获取title_node超链接的标题title = title_node.get_text()# 获取title_node超链接的urllink = title_node["href"]datas.append(# 整理成字典{"title":title,"link": link})return datas;# 执行所有的HTML页面的解析all_datas =[]for html in htmls:all_datas.extend(parse_single_html(html))print(all_datas)filename='blog.json'with open(filename,'w') as file_obj:# json.dump(all_datas,file_obj)file_obj.write(str(all_datas))print("写入成功")
在爬取这个网页的时候由于我页面格式没有分析好,所以导致我中间出错,等以后写爬虫的时候一定要注意这些细节的问题。
看结果,哇塞,爬了十页呀
