对东方财富网进行数据 爬取
1、首先是导包
主要使用的是requests、BeautifulSoup和pandas三个包
import requests
from bs4 import BeautifulSoup
import pandas as pd
requests 在爬虫中一般用于来处理网络请求
Beautiful Soup?是一个可以从HTML或XML文件中提取数据的Python包,
通过想使用的转换器实现惯用的文档导航,查找,修改文档的方式
def download_all_htmls():
"""
下载所有列表页面的HTML,用于后续的分析
"""
url = f"http://data.eastmoney.com/zjlx/000001.html"
print("craw html:", url)
r = requests.get(url,
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Edg/94.0.992.31"})
if r.status_code != 200:
raise Exception("error")
htmls=r.text
return htmls
下载所需的列表网页“http://data.eastmoney.com/zjlx/000001.html"
htmls = download_all_htmls()
下载所需的网页
#查看爬取的代码
htmls
def parse_single_html(html):
"""
解析单个HTML,得到数据
@return list({"link", "title", [label]})
"""
soup = BeautifulSoup(html,'html.parser')
data_items = soup.find("div", class_="sinstock-filter-wrap").find("table", class_="tab").find("tbody").find_all('td')
datas = []
for data_item in data_items:
name=data_item.find('a').get_text()
herf='http://data.eastmoney.com'+data_item.find('a')['href']
datas.append({'name':name,'herf':herf})
return datas
定义一个函数对单个网页进行分析处理,得到数据
使用requests 获取到整个页面的html代码,对整个页面代码进行处理,所需要的数据只是页面上的一小部分数据,所以我们需要对页面代码html5解析然后筛选提取出我们想要对数据,使用beautifulsoup 便派上用场,beautifulsoup 之后通过标签+属性的方式来进行定位
import pprint
pprint.pprint(parse_single_html(htmls))
parse_single_html(htmls)
?
?查看网页上的字符块
df=pd.DataFrame(parse_single_html(htmls))
df
df.to_csv('data.csv',encoding = 'GB2312')
?将数据进行保存,
|