python线程抓取页面简单内容
时间:2019-03-19
本文章向大家介绍python线程抓取页面简单内容,主要包括python线程抓取页面简单内容使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
用到的基本就是之前提到的线程小框架及逻辑
# -*- encoding: utf-8 -*-
import requests
from lxml import etree
import threading
import os
class Cnbeta(object):
thread = []
#获取网站首页
def get_url(self,url):
# 如果没有文件就创建文件
if not os.path.exists('cnbeta.html'):
res = requests.get(url)
res1 = res.content.decode("utf-8")
with open('./cnbeta.html','w',encoding='utf-8') as f:
f.write(res1)
return res1
else:
with open('./cnbeta.html',encoding='utf-8') as f:
content = f.read()
return content
# 抓取内页网址
def get_data(self,html):
# 完善html标签
tree = etree.HTML(html)
url = tree.xpath("//div[@class='headline-thumb']/a/@href")
for i in url:
self.thread.append(i)
# 抓取内页内容放入文件
def get_xiang(self,res):
# 动态文件名
name = str(res).split('/')[-1].replace('.htm','')
# 请求列表中的地址
r = requests.get(res)
r1 = r.content.decode('utf-8')
path = './upload/'
with open( path+name+'.html','w',encoding='utf-8' ) as f:
print("*****")
f.write(r1)
if __name__ == "__main__":
cnbeta = Cnbeta()
html = cnbeta.get_url("https://www.cnbeta.com/")
# 将请求地址放入列表中
cnbeta.get_data(html)
print(cnbeta.thread)
for i in cnbeta.thread:
a = threading.Thread(target=cnbeta.get_xiang,args=(i,))
a.setDaemon(True)
a.start()
a.join()
爬虫有危险,抓取需谨慎
- 如何从微信公众平台上下载关注用户(备份微信关注用户)
- 使用hive客户端java api读写hive集群上的信息
- 大数据算法设计模式(1) - topN spark实现
- redis性能调优笔记(can not get Resource from jedis pool和jedis connect time out)
- thrift例子:python客户端/java服务端
- springboot与thrift集成实现服务端和客户端
- 调用{dede:likewords}为dedecms添加相关搜索词
- 重新调整Keras中长短期记忆网络的输入数据
- Linux内存(手动释放cache)
- django中间件Middleware
- springboot kafka集成(实现producer和consumer)
- 分布式锁的实现(redis)
- springboot scheduled并发配置
- RabbitMQ高可用集群配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法