zoukankan      html  css  js  c++  java
  • 巴比特网站爬取

    #!/user/bin/env python
    # -*- conding:utf-8 -*-
    import requests
    from lxml import etree
    import json
    class BtcSpider(object):
        def __init__(self):
            self.base_url = 'https://8btc.com/forum-61-'
            self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6823.400 QQBrowser/10.3.3117.400'}
            self.data_list = []
        #发送请求
        def get_response(self,url):
            response = requests.get(url,headers=self.headers)
            #head--meta-charset
            #抓取网页的编码是gbk
            data = response.content.decode('gbk')
            return data
        #解析网页
        def parse_data(self,data):
            #使用xpath解析当前页面
            #转类型
            x_data = etree.HTML(data)
            #根据xpath路径解析
            #路径  手写    借助浏览器  右击粘贴xpath路径,需要修改
            tittle_list = x_data.xpath('//a[@class="s xst"]/text()')
            # tittle_list = x_data.xpath('//from[@id="moderate"]/div/div[2]/div/a[1]/text()')
            #模糊查询                     //div[contain(@id,"normathread")]
            url_list = x_data.xpath('//a[@class="s xst"]/@href')
            for index,tittle in enumerate(tittle_list):
                news = {}
                # print(index)
                # print(tittle)
                news['name'] = tittle
                news['url'] = url_list[index]
                self.data_list.append(news)
        #保存数据
        def save_data(self):
            #将列表转换成字符串
            data_str = json.dumps(self.data_list)
            with open('05btc.json','w') as f:
                f.write(data_str)
        #启动
        def run(self):
            #拼接完整url
            for i in range(1,10):
    
                url =self.base_url + str(i)+'.html'
    
                #发送请求
                data = self.get_response(url)
                #做解析
                parse_data = self.parse_data(data)
            #保存
            self.save_data()
    
    BtcSpider().run()
  • 相关阅读:
    大型网站架构系列:负载均衡详解(1)
    转:构建高并发高可用的电商平台架构实践
    转:RBAC权限控制
    小型电商网站的架构
    中小型电子商务网站架构
    装饰器在类中的实现
    使用MySQLdb操作Mysql数据库
    unicode转中文以及str形态的unicode转中文
    了解Python内存管理机制,让你的程序飞起来
    多线程初级入门学习
  • 原文地址:https://www.cnblogs.com/HomeG/p/10527164.html
Copyright © 2011-2022 走看看