Python爬虫小记

前言

写的一个爬虫代码,涉及到了利用pandas读写Excel文件,利用BeautifulSoup爬取数据等内容

爬取对象

雪球网上的部分股票信息

xls文件读取

由于从网站上下载下来的数据为.xls格式,所以利用pandas库来读取.xls文件

info_exl = pd.ExcelFile('stock.xls')
info_data = pd.read_excel(info_exl, 0) # 获取表xls表中的内容

爬取数据

  1. 由于需要将原文件的数据与新爬取的数据放在同一个表格里,这里采用将新旧数据放在一个新的.xlsx文件里的方法(因为源文件为.xls文件,读写该文件的库一直装不上,而读写.xlsx的库比较好装)

    headers = {'user-agent':'xxxx'} # 用于解决网站不能爬取的问题
    writer = pd.ExcelWriter('stock-copy.xlsx')
    
  2. 设置新的dataFrame对象,用于写入新文件

     # 设置字典中的key
    stock_code = info_data.loc[i][0][7:]+info_data.loc[i][0][0:6]
    stock_dict["股票代码"].append(stock_code)
    stock_name = info_data.loc[i][1]
    stock_dict["股票简称"].append(stock_name)
    stock_lprice = info_data.loc[i][2]
    stock_dict["最新价"].append(stock_lprice)
    stock_range = info_data.loc[i][3]
    stock_dict["最新涨跌幅"].append(stock_range)
    stock_type = info_data.loc[i][4]
    stock_dict["股票市场类型"].append(stock_type)
    print(stock_code, stock_name, stock_lprice, stock_range, stock_type)
    
  3. 爬取数据

    1. 合成url:通过改变股票代码达到爬取新的页面的目的

      # 合成网址
      table_label = ["当前价格", "市盈率(TTM)", "市净率", "每股收益", "股息(TTM)", "股息率(TTM)"]
      target = stock_code
      url1 = "https://xueqiu.com/S/"+target
      html = requests.get(url1, headers=headers)
      print(html.url)
      
    2. 爬取整个页面

      # 获取整个页面
      soup = BeautifulSoup(html.text, features="lxml")
      
    3. 解析页面数据:通过逐步缩小数据所在范围,最后获得所需数据

      # 获取股票价格
          price = soup.select(".quote-container")[0].find("strong")
          print(table_label[0])
          print(price.text[1:])
          stock_dict[table_label[0]].append(price.text[1:])
          
          # 获取所需信息在的表格
          table = soup.select(".quote-info")[0]
          
          # 获取表格中的行
          line = table.find_all("tr")
          
          # 获取行中内容
          element2 = line[2].find_all("td")
          element3 = line[3].find_all("td")
          element4 = line[4].find_all("td")
          element5 = line[5].find_all("td")    
          
          # 打印所爬取的信息    
          print("===========")
          
          print(table_label[1])
          print(element2[3].text[9:])
          stock_dict[table_label[1]].append(element2[3].text[9:])
          
          print(table_label[2])
          print(element3[3].text[4:])
          stock_dict[table_label[2]].append(element3[3].text[4:])
          
          print(table_label[3])
          print(element4[0].text[5:])
          stock_dict[table_label[3]].append(element4[0].text[5:])
          
          print(table_label[4])
          print(element4[1].text[8:])
          stock_dict[table_label[4]].append(element4[1].text[8:])
          
          print(table_label[5])
          print(element5[1].text[9:])
          stock_dict[table_label[5]].append(element5[1].text[9:])
      

xlsx文件写入

将数据写入.xlsx文件:利用了Excelwriter

df = pd.DataFrame(stock_dict)
df.to_excel(writer, sheet_name='data', index=False)
writer.close()# 关闭writer

你可能感兴趣的:(Python爬虫小记)