import requests
from lxml import etree
import json class BtcSpider(object):
def __init__(self):
self.base_url = 'http://8btc.com/forum-61-'
self.headers = {
"User-Agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
} self.data_list = [] # 1.发请求
def get_response(self, url):
response = requests.get(url, headers=self.headers)
# 网页的 编码到底 是 gbk 还是 urf-8 head--meta-charset=""
# 原因 是 抓取 网页的 编码 就是 gbk的 所以 解码的时候 也是要gbk
# data = response.content.decode('gbk')
data = response.content
return data # 2.解析数据
def parse_data(self, data):
# 使用xpath 解析当前页面 所有的 新闻title 和url 保存
# 1.转类型
x_data = etree.HTML(data) # 2.根据xpath路径解析
# 路径 1. 纯手写 2. 借助浏览器的 右击 粘贴xpath路径; 需要修改
title_list = x_data.xpath('//a[@class="s xst"]/text()')
# title_list = x_data.xpath('//form[@id="moderate"]/div/div[2]/div/a[@class="s xst"]/text()')
url_list = x_data.xpath('//a[@class="s xst"]/@href') for index, title in enumerate(title_list):
news = {}
news['name'] = title
news['url'] = url_list[index]
self.data_list.append(news) # 3.保存数据
def save_data(self): # 将 list---str
data_str = json.dumps(self.data_list)
with open('05btc.json', 'w') as f:
f.write(data_str) # 4.启动
def run(self): for i in range(1, 5):
# 1.拼接 完整url
url = self.base_url + str(i) + '.html'
# print(url)
# 2.发请求
data = self.get_response(url) # 3.做解析
self.parse_data(data)
# 4.保存
# self.save_data() BtcSpider().run()

6.05-btc的更多相关文章

  1. [转]Ethereum-智能合约最佳实践

    主要章节如下: Solidity安全贴士 已知的攻击手段 竞态 可重入 交易顺序依赖 针对Gas的攻击 上溢/下溢 工程技术 参考文献 这篇文档旨在为Solidity开发人员提供一些智能合约的secu ...

  2. 点广告获取一些BTC(比特币)的网站

      免费获取比特币:http://freebtc.qiniudn.com/freebtc.html   free btc:http://freebtc.qiniudn.com/freebtc.html ...

  3. [小北De编程手记] : Lesson 05 - Selenium For C# 之 API 下

    上一篇,我们介绍了一些Selenium WebDriver相关的API,下面我们就接着上一篇继续介绍Selenium常用的API,这一篇的内容主要涉及到以下话题: Selenium API:复杂事件处 ...

  4. How to setup Electrum testnet mode and get BTC test coins

    For some reason we need to use BTC test coins, but how to set up the Bitcoin testnet wallet and get ...

  5. Java学习笔记(05)

    目录: static的用法 主函数的定义 增强for的循环 单例设计模式 封装 一.Static的用法 1.对象的内存分析 对象的引用变量是存在于栈区,而在堆区开辟了一块内存空间,调用对象给成员变量赋 ...

  6. iOS系列 基础篇 05 视图鼻祖 - UIView

    iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...

  7. 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)

    版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...

  8. javaSE基础05

    javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...

  9. 异步编程系列第05章 Await究竟做了什么?

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

  10. javascript基础05

    javascript基础05 1.变量的作用域 变量既可以是全局,也可以是局部的. 全局变量:可以在脚本中的任何位置被引用,一旦你在某个脚本里声明了全局变量,你就可以 在这个脚本的任何位置(包括函数内 ...

随机推荐

  1. Java IO(2)阻塞式输入输出(BIO)

    在上文中<Java IO(1)基础知识——字节与字符>了解到了什么是字节和字符,主要是为了对Java IO中有关字节流和字符流有一个更好的了解. 本文所述的输出输出指的是Java中传统的I ...

  2. Node.js性能分析神器Easy-Monitor

    摘要: 使用Easy-Monitor,可以准确定位Node.js应用的性能瓶颈,帮助我们优化代码性能. 当应用出现性能问题时,最大的问题在于:如何准确定位造成性能瓶颈的代码呢?对于Node.js开发者 ...

  3. BZOJ 2463: [中山市选2009]谁能赢呢?(智商)

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3110  Solved: 2250[Submit][Status][Discuss] Descript ...

  4. 从发布订阅模式到redux(一)

    最近在学习的过程中,学习了一些关于redux的一些知识,学之前用redux,虽然会用但是实现的原理就不是特别清楚,天天沉迷于搬砖 总是这木搬砖也不是个事啊,就准备开始深入了解一些原理性的东西 首先在看 ...

  5. slice()和subString()

    substring() 方法用于提取字符串中介于两个指定下标之间的字符.slice()返回一个子片段,对原先的string没有影响,与subString的区别是,还可以用负数当参数,相当于是lengt ...

  6. Gson解析空字符串异常的处理

    面对一些不规范的json,我们的gson解析经常会抛出各种异常导致app崩溃,这里可以采取一些措施来避免. 我们期望在后台返回的json异常时,也能解析成功,空值对应的转换为默认值,如:newsId= ...

  7. weui textarea超出字符被截断

    HTML: <div class="weui-cells weui-cells_form" style="margin-top: 0;"> < ...

  8. Unity网页游戏

    Unity网页游戏是跑在浏览器的UnityWebPlayer插件中的,运行的模式是webplayer.unity3d+html 在嵌入UnityWebPlayer的网页中会调用UnityObject2 ...

  9. 新闻思考-阿里进军游戏产业,苹果发力ARM芯片

    2018.04.03 大家好,这是我开通博客的第一篇文章,我希望在这里分享我的知识,也学习更多的知识,希望大家学习愉快. 阿里进军游戏产业,拿下旅行青蛙的代理权.腾讯一直在进攻阿里的核心业务:电商和支 ...

  10. mysql执行语句提示Table 'performance_schema.session_variables' doesn't exist

    用管理员身份cmd进入mysql安装目录bin里,执行 mysql_upgrade -u root -p 如果杀毒软件拦截,添加为信任区