爬取天天基金排行

环境要求

  • requests第三方模块
  • lxml第三方模块
  • json模块

代码如下

import requests
from lxml import etree
import json

class TiantianSpider:
    def __init__(self):
        self.temp_url = "http://fund.eastmoney.com/api/Dtshph.ashx?t=0&c=yndt&s=desc&issale=&page=%d&psize=200&callback=jQuery18301398017601166126_1531738183728&_=1531738184291"
        self.prefix = "http://fund.eastmoney.com"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
        }

    def parse_url(self, url):
        print(url)
        return requests.get(url, headers=self.headers).content.decode()

    def get_content_list(self, html_str):
        item_list = []

        # print(html_str)
        # print(html_str[41:-1])
        json_data = json.loads(html_str[41:-1])

        html = etree.HTML(json_data["data"])
        tr_list = html.xpath('//tr')
        for tr in tr_list:
            item = {}
            item["number"] = tr.xpath('./td[3]/a/text()')[0]
            item["url"] = self.prefix+tr.xpath('./td[3]/a/@href')[0]
            item["name"] = tr.xpath('./td[4]/a/text()')[0]
            item["links"] = []
            for link in tr.xpath('./td[5]/a'):
                a = {}
                a["text"] = link.xpath("./text()")[0]
                a["url"] = self.prefix+link.xpath("./@href")[0]
                item["links"].append(a)
            item["dyjz"] = tr.xpath('./td[6]/span/text()')[0]
            item["date"] = tr.xpath('./td[7]/text()')[0]
            item["1year"] = "".join(tr.xpath('./td[8]//text()')).strip()
            item["2year"] = "".join(tr.xpath('./td[9]//text()')).strip()
            item["3year"] = "".join(tr.xpath('./td[10]//text()')).strip()
            item["5year"] = "".join(tr.xpath('./td[11]//text()')).strip()
            item["pingji"] = tr.xpath('./td[12]/span/text()')[0]
            item["feilv"] = tr.xpath('./td[13]//a/text()')[0]
            print(item)
            item_list.append(item)

        return item_list, json_data["total"]

    def save_content_list(self, item_list):
        pass

    def run(self):
        page = 1
        pagesize = 200
        total = 1
        while (page - 1) * pagesize < total:
            url = self.temp_url % page
            html_str = self.parse_url(url)
            item_list, total = self.get_content_list(html_str)
            self.save_content_list(item_list)
            page += 1

        print("完成")

if __name__ == '__main__':
    spider = TiantianSpider()
    spider.run()
### LVS负载均衡配置指南 #### 选择合适的LVS工作模式 对于LVS的配置,首先要决定采用哪种工作模式。常见的有NAT、DR和TUN三种模式[^2]。 - **NAT (Network Address Translation)** 这种模式下,真实服务器不需要知道虚拟IP地址的存在,所有的流量都通过负载均衡器转发。适用于小型网络环境。 - **DR (Direct Routing)** DR模式允许客户端直接访问后端的真实服务器,而不必经过负载均衡器返回响应。这可以显著减少负载均衡器的压力并提高效率[^3]。 - **TUN (Tunneling)** TUN模式利用隧道技术来传递数据包,在某些特定场景中有其独特优势,比如跨数据中心部署时可选此方案。 #### 安装与基本设置 安装LVS通常涉及以下几个方面: 1. 确认操作系统支持ip_vs模块; 2. 加载必要的内核模块如`ip_vs`, `ip_vs_rr`, `ip_vs_wrr`, 和 `ip_vs_lc`; 3. 设置防火墙规则以允许所需的通信协议和服务端口; ```bash modprobe ip_vs modprobe ip_vs_rr modprobe ip_vs_wrr modprobe ip_vs_lc ``` #### 配置调度算法 根据需求选取适合的调度策略,例如加权轮询(WRR),它是在标准轮询基础上加入了权重参数,使得更强大的机器能承担更多任务[^4]。 ```bash # 使用WRR算法添加服务到VIP上 ipvsadm -A -t VIP:port -s wrr ``` 为了进一步优化性能,还可以考虑使用最少连接数(LC)作为调度方法之一,这种做法会优先把新请求发送给当前活跃连接数量较少的服务实例。 #### 实现高可用性 为确保系统的稳定性和可靠性,建议配合Keepalived工具一起使用,它可以监控主节点的状态并在必要时候自动切换至备用节点继续提供服务[^1]。 ```bash yum install keepalived -y systemctl start keepalived systemctl enable keepalived ``` 完成上述步骤之后,便可以根据具体的应用场景调整各项参数直至达到最优效果。值得注意的是实际操作过程中可能还会遇到其他细节问题,因此务必参照官方文档以及社区资源深入学习掌握。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值