题目:股票数据的定向爬虫。
目标:获取美股所有股票的代码和美股个股的链接。
材料:需要网站东方财富网。
东方财富网:
股票代码查询一览表 _ 股票行情 _ 东方财富网
![](https://img-blog.csdnimg.cn/d53c1c8452c849ba93c9a8057ad74503.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASk9faHVudGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
步骤1
:访问东方财富网查看股票信息。
步骤
2
:使用开发者模式打开东方财富网(F12),分析东方财富网股票列表信息。
步骤
3
:根据分析的网页内容编写爬虫
步骤4
:将爬取结果存储到文件
![](https://img-blog.csdnimg.cn/c0669fa95d9d48d69a42b89b9f071014.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASk9faHVudGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
代码:
import requests
from bs4 import BeautifulSoup
import re
import csv
def getHTMLText(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding #如果直接知道编码形式的话直接用,apparent_encoding是一个比较耗时的操作。
return r.text
except:
return ""
def getStockInfo(stock_list_url, save_path):
html = getHTMLText(stock_list_url)
#print(html)
soup = BeautifulSoup(html, 'html.parser')
div = soup.find('div', attrs={'class': 'quotebody'})
# print(div.prettify())
li_lists = div.find_all('li')
try:
ll = []
for item in li_lists:
a = item.find('a')
name = a.string
href = a.attrs['href']
ll.append([name, href])
print(name, href)
f = open(save_path, 'w', encoding='utf-8', newline='\n')
writer = csv.writer(f)
writer.writerow(['name', 'href'])
f.close()
with open(save_path, "a", encoding='utf-8', newline='\n') as f:
writer = csv.writer(f)
writer.writerows(ll)
except:
return 'error'
def main():
stock_list_url = 'http://quote.eastmoney.com/usstocklist.html'
save_path = '/home/program/program/a.csv'
getStockInfo(stock_list_url, save_path)
main()
打印结果:
![](https://img-blog.csdnimg.cn/9a48f1458f82468089f9aedf3eb50b92.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASk9faHVudGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
保存表格: