目标:爬取东方财富网站数据
步骤:1.分析网站页面内容 确定爬取的具体目标
2.查阅资料进行代码和思路学习
3.进行实际操作 尝试爬取网站
通过教程学习可知爬取页面涉及的几个包有
1.requests库是一个http请求库用于对目标网页进行爬取
2.beautifulsoup库主要的功能是从网页抓取数据
3.pprint库主要功能是美化打印结果
4.由于最终结果要存储成为csv文件 导入了csv相关库
import requests from bs4 import BeautifulSoup import pprint import csv import pandas as pd
导库结束后进行网页下载
定义一个函数用于下载html
def download_all_htmls():
htmls=[]
for i in range(1):
url = f"http://data.eastmoney.com/zjlx/00000{i+1}.html/"
print("craw html:",url)
r = requests.get(url)
if r.status_code !=200:
raise Exception("error")
htmls.append(r.text)
return htmls
调用函数 查看下载的html链接
htmls=download_all_htmls()
返回第一页的页面具体内容
htmls[0]
对单个页面进行数据分析
定义一个函数对页面中希望爬取的内容进行处理
def parse_single_html(html):
soup=BeautifulSoup(html,'html.parser')
bodys=soup.find_all("body")
datas=[]
for body in bodys:
title_nodes=(
body
.find("div",class_="sinstock-filter-wrap")
)
title=title_nodes.get_text()
title1=title.replace("n", " ");
link_nodes=(
body
.find("div",class_="sinstock-filter-wrap")
.find_all("a")
)
a1=[]
for i in range(20):
if(i<20):
link=link_nodes[i]["href"]
i=i+1
a1.append(link)
print("links:",a1)
datas.append(
{"title":title1,"link":link})
return datas
将爬取到的内容用pprint打印
pprint.pprint(parse_single_html(htmls[0]))
定义all_datas列表储存爬取到的内容
all_datas=[]
for html in htmls:
all_datas.extend(parse_single_html(html))
调用all_datas后可以得到整个页面爬取的结果



