练习1--爬取btc论坛的title和相应的url
2024-10-18 06:36:09
爬不到此论坛的html源码,应该涉及到反爬技术,以后再来解决,代码如下
import requests
from lxml import etree
import json class BtcSpider(object):
def __init__(self):
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.base_url = "https://www.chainnode.com/forum/2"
self.data_list = [] # 获取数据
def get_data(self, url):
response = requests.get(url, headers=self.headers)
data = response.content.decode()
return data # 解析数据
def parse_data(self, data):
# 转换数据的类型
x_data = etree.HTML(data)
# 按照路径解析
title_list = x_data.xpath('//a[@class="link-dark-major font-bold bbt-block"]/text()')
url_list = x_data.xpath('//a[@class="link-dark-major font-bold bbt-block"]/@href')
url_list = ["https://www.chainnode.com" + i for i in url_list]
for index, title in enumerate(title_list):
news = {}
news['name'] = title
news['url'] = url_list[index]
self.data_list.append(news) # 保存数据
def save_data(self):
data_str = json.dumps(self.data_list)
with open('03-btc.html', 'w') as f:
f.write(data_str) # 启动
def run(self):
for i in range(1,5):
# 拼接完整url
url = self.base_url if i == 1 else self.base_url + str(-i)
# 发送请求
data = self.get_data(url)
# 解析数据
self.parse_data(data)
self.save_data() BtcSpider().run()
最新文章
- 项目中 poi 导出 出现html特殊符号的实体 (已解决)
- linux开机启动
- 使用GITHUB的体会
- CentOS 关闭蜂鸣器声音
- 2>; How Struts 2 Works
- duang体加班版
- MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件
- 每天一个linux命令(56)--crontab命令
- 初始Django
- [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx
- 【django基础之ORM】
- windows cmd.exe 将程序 stdout 输出到文件中
- 使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization)
- CSS之边框
- Apache SkyWalking的架构设计【译文】
- Eclipse创建maven工程后没有build path解决方案
- C# linq 最大、最小对象的扩展
- ubuntu安装scrapy方法
- 【刷题】BZOJ 3653 谈笑风生
- svn 服务器搭建 ,采用http的方式加密用户。