爬虫组队学习task-0:自学爬虫简单知识

抖音X-Medusa风控逆向:unidbg环境重建与魔改AES还原 X-Medusa并非传统加密算法,而是深度耦合运行时环境的动态混淆系统,其核心是硬件指纹感知、线程上下文绑定与非标AES变异。理解其原理需跳出‘找密钥’思维,转向对CPU型号、系统属性、微秒级时间及内存布局的综合建模。技术价值在于将不可控的客户端风控,转化为可复现、可配置、可运维的服务化能力;典型应用场景包括合规数据采集、API协议适配与移动安全研究。本文聚焦Android native层逆向实践,基于unidbg实现高保真环境模拟,并完整还原S-Box动态生成、MixColumns矩阵变异与轮密钥XOR扰 阅读详情

视频资源:https://www.bilibili.com/video/BV1NW411V7CQ

单元1:熟悉request库

简单爬取百度首页

import requests  # 引入requests 库
r = requests.get('https://baidu.com')  # 请求百度首页
r.status_code  # 打印返回的状态码 
r.encoding= 'utf-8'  # 设置编码
r.text   # 打印爬取内容

具体成果
requests库方法介绍

方法说明
requests.request()构造一个请求,支撑以下各方法的基础方法
requests.get()获取HTML网页的主要方法,对应HTTP的GET
requests.head()获取HTML网页头信心的方法,对应于HTTP的HEAD
requests.post()向HTML网页提交POST请求的方法,对应HTTP的POST
requests.put()向HTML网页提交PUT请求方法,对应HTTP的PUT
requests.patch()向HTML网页提交局部修改信息,对应HTTP的PATCH
requests.delete()向HTML网页体提交删除请求,对应HTTP的DELETE

requests.get(url,params=Node,**kwargs)
url: 拟获取页面的url链接
params:url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问的参数

get方法 其实是对request方法的封装
Response对象的属性

属性说明
r.status_codeHTTP请求的返回状态,200表示连接成功,404表示失败
r.textHTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding从HTTPheader中猜测的相应内容编码方式,如果header中没有charset属性就,则默认编码格式是ISO-8859-1
r.apparent_encoding从内容中分析出的响应内容编码方式(备选编码方式)
r.contenthttp相应内容的二进制形式

理解Requests库异常

异常说明
requests.HTTPErrorHTTP错误异常
reuqests.URLRequiredURL缺失异常
requests.TooManyRedirects超过最大重定向数,产生重定向异常
requests.ConnectTimeout连接远程服务器超时异常
requests.Timeout请求URL超时产生超时异常

获取异常

异常说明
r.raise_for_status()如果不是200,产生异常requests.HTTPError

通用框架

import requests
def getHTMLText(url):
	try:
		r = requests.get(url, timeout=30)
		r.raise_for_status() #如果状态不是200 引发HTTPError异常
		r.encoding = r.apparent_encoiding 
		return r.text
	except:
		return '产生异常'
if __name__ == "__main__":
	url = 'https://baidu.com'
	print(getHTMLText(url))

HTTP协议
HTTP,Hypertext Transfer Protocol,超文本传输协议。HTTP 是一个基于“请求与相应” 模式的、无状态的应用层协议。
HTTP协议对应资源的操作

方法说明
GET请求获取URL位置的资源
HEAD请求获取URL位置资源的相应消息报告,即获取该资源的头信息
POST请求向URL位置的资源后附加新的数据
PUT请求向URL位置存储一个资源,覆盖原URL位置的资源
PARCH请求局部更新URL位置的资源,即改变该资源的部分内容
DELETE请求删除URL位置存储的资源。

requests的 **kwarges:控制访问的参数(均可选):

参数介绍
params参数 参与url编译
data放在 data域中 ,字典、字节序列或文件,Request的内容
json以json 的格式传数据
headers设置请求头
cookies设置请求cookies
auth身份验证
files传文件
timeout设置请求超时时间
proxies设置代理
allow_redirects允许重定向 控制参数
stream是否是流的形式 控制参数
verify验证 控制参数
cert证书

具体参数表

方法介绍
requests.get(url,params=None,**kwarges)12 个控制访问的参数
requests.head(url,**kwarges)13个控制访问参数
requests.post(url,data=None,json=None,**kwarges)11个控制访问的参数
requests.put(url,data=None,**kwarges)12个控制访问的参数
requests.patch(url,data=None,**kwarges)12个控制访问的参数
requests.delete(url,**kwarges)13个控制访问的参数

单元2:爬虫的盗亦有道

网络爬虫的限制

  • 来源审查:判断User-Agent进行限制
    检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问。
  • 发布公告:Robots协议
    告知所有爬虫网站的爬取策略,要求爬虫遵守。

Robots协议的使用
网络爬虫:自动或人工识别robots.txt再进行内容爬取。
约束性:Robots协议是建议但非约束性,网络爬虫可以不遵守,但存在法律风险。

对Robots协议的理解
类人类行为可不参考Robots 协议

爬取网页玩转网页爬取网站,爬取系列网站爬取全网
访问量很小:可以遵守 范文量较大:建议遵守分商业且偶然:建议遵守 商业利益:必须遵守必须遵守
User-agent: *
Disallow:/  

Robots协议基本语法
禁止爬虫

单元3 Requests爬虫实战

jd爬虫代码

import requests
url = "https://item.jd.com/2967929.html"
try:
	r= requests.get(url)
	r.raise_for_status()
	r.encoding = r.apparent_encoding
	print(r.text[:1000])# 输出0-1000
except:
	print("爬取失败")

amazon

import requests
url = "https://www.amazon.cn/gp/product/B01M8L5z3Y"
try:
	kv={ 'user-agent':'Mozilla/5.0'}# 设置头信息
	r = requests.get(url,headers=kv)
	r.raise_for_status()
	r.encoding = r.apparent_enncoding
	print(r.text[1000,2000])
except:
	print("爬取失败")

百度搜索

import requests
keyword= "Python"
url = "https://baidu.com/s"
try:
	k = {'wd':keyword}
	kv={ 'user-agent':'Mozilla/5.0'}# 设置头信息
	r = requests.get(url,params=k,header=kv)
	r.raise_for_status()
	r.encoding = r.apparent_enncoding
	print(len(r.text))
except:
	print("爬取失败")

爬取图片并写入文件

import requests
path = "D:/abc.jpg"
url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
r = requests.get(url)
r.status_code
with open(path, 'wb') as f:
	f.write(r.content)

ip地址查询代码

import requests
url = "http://m.ip138.com/ip.asp?ip="
try: 
	r = requests.get(url +'202.204.80.112')
	r.raise_for_status()
	r.encoding = r.apparent_encoding
	print(r.text[-500:])
except:
	print("爬取失败")

单元4 BeautifulSoup学习

美味汤

from bs4 import BeautifulSoup
soup = BeautifulSoup('<p>data</p>','html.parser')

beautiful Soup 库解释器

解析器使用方法条件
bs4的HTML解析器BeautifulSoup(mk,‘html.parser’)安装bs4库
lxml的HTML解析器BeautifulSoup(mk, ‘lxml’)pip install lxml
lxml的XML解析器BeautifulSoup(mk, ‘xml’)pip install lxml
html5lib的解析器BeautifulSoup(mk, ‘html5lib’)pip install html5lib

BeautifulSoup 库的理解

属性说明
.name获取标签的名称 拿上边的代码举例例如 soup.p.name 得到p
.tag获取标签tag 即soup.p 得到<p>data</p>
.attrs获取非属性字符串 soup.p.attrs 得到 { }

标签树的下行遍历

属性说明
.contents子节点列表,将<tag> 所有儿子节点存入列表
.children字节点的迭代类型,与.contents 类似,用于循环遍历儿子节点
.descendants子孙节点的迭代类型,包含所有子孙节点,用于循环遍历

标签树的上行遍历

属性说明
.parent获取当前节点的父节点
.parents获取父节点的列表 在for中使用

标签树的平行遍历

属性说明
.next_sibling返回按照HTML文本顺序的下一个平行节点标签
.previous_sibiling返回按照HTML文本顺序的上一个平行节点标签
.next_siblings迭代类型,返回按照HTML文本顺序的后续所有平行节点标签 在for中使用
.previous_sibilings迭代类型,返回按照HTML文本顺序的前序所有平行节点标签 在for中使用

bs4 库的prettify()方法
返回格式化的html 代码 加了许多\n和空格标签

单元5 信息标记

标记后的信息可形成信息组织结构,增加了信息维度
标记后的信息可用于通信、存储或展示
标记的结构与信息一样具有重要价值
标记后的信息更利于程序理解和运用

三种信息标记形式的的比较

名称好处用途
XML最早的通信信息标记语言,可扩展性好,但繁琐。Internet 上的信息交互与传递
JSON信息有类型,适合程序处理(js),较XML简洁。移动应用云端和节点的信息通信,无注释。
YAML信息无类型,文本信息比例最高,可读性好。各类系统的配置文件,有注释易读。

信息提取的一般方法:
方法一: 完整解析信息的标记形式,再提取关键信息。
XML JSON YAML
需要标记解析器 例如:bs4库的标签树遍历
优点:信息解析准确
缺点:提取过程繁琐,速度慢。
方法二: 搜索式查考信息

<>.find_all(name,attrs,recursive,string,**kwargs)
返回一个列表类型,存储查找的结果。
name:对标签名称的检索字符串。
attrs:对标签属性值的检索字符串,可标注属性检索。
recursive:随否对子孙全部检索,默认是True
string:<>…</> 中字符串区域的检索字符串。

扩展方法

方法说明
<>.find()搜索且只返回一个结果,字符串类型,同.find_all()参数
<>.find_parents()在先辈节点中搜索,列表类型
<>.find_parent()在先辈节点中返回一个结果,字符串类型
<>.find_next_siblings()在后续平行节点中搜索,返回列表类型,同.find_all()
<>.find_next_sibling()在后续点中返回一个结果,字符串类型
<>.find_previous_siblings()在前序平行节点中搜索,返回列表类型,同.find_all()
<>.find_previous_sibling()在前序节点中返回一个结果,字符串类型

单元6 爬中国大学排名

程序的结构设计
步骤1 : 从网络上获取大学排名网页内容getHTMLText()
步骤2 : 提取网页内容中信息到合适的数据结构fillUnivList()
步骤3 :利用数据结构展示并输出结果printUnivList()

代码

#!/usr/bin/python3
import requests
from bs4 import BeautifulSoup
import bs4

def getHTMLText(url):
    try :
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""
    
    

def fillUnivList(uList,html):
    soup = BeautifulSoup(html,"html.parser")
    for tr in soup.find('tbody').children:
        if isinstance(tr, bs4.element.Tag):
            tds = tr('td')
            uList.append([tds[0].string,tds[1].string,tds[3].string])
    pass

def printUnivList(uList,num):
    tple = "{0:^10}\t{1:{3}^10}\t{2:^10}"
    print(tple.format("排名", "学校", "分数",chr(12288)))
    for i in range(num):
        u = uList[i]
        print(tple.format(u[0], u[1], u[2],chr(12288)))


def main():
    uinfo =[]
    url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'
    html = getHTMLText(url)
    fillUnivList(uinfo, html)
    printUnivList(uinfo,20)


if __name__ == '__main__':
    main()


中文对齐问题的解决
采用中文字符的空格填充 chr(12288)

format 详解
在这里插入图片描述

^, <, >分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

+表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格

b、d、o、x 分别是二进制、十进制、八进制、十六进制。
解释
因此tple = "{0:^10}\t{1:{3}^10}\t{2:^10}"
print(tple.format("排名", "学校", "分数",chr(12288)))

位置解释
{0:^10}第一个位置居中占10格
{1:{3}^10}第二个位置居中 空格部分用 第四个位置上的中文空格代替
{2:^10}第三个位置居中占10格

单元7 正则表达式

正则表达式 是用来简洁表达一组字符串的表达式。

函数说明
re.search()在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match()从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall()搜索字符串,以列表类型返回全部能匹配的子串
re.split()将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer()搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub()在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

re.search(pattern,string,flags = 0)
在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象。
pattern:正则表达式的字符串或原生字符串表示
string:待匹配字符串
flags: 曾泽表达式使用时的控制标记

常用标记说明
re.I re.IGNORECASE忽略正则表达式的大小写,[A-Z]能够匹配小写字符
re.M re.MULTILINE正则表达式中的^ 操作符能够将给定字符串的每行当作匹配开始
re.S re.DOTALL正则表示中的. 操作符能匹配所有字符,默认匹配除换行符外的所有字符

正则表达式的表示类型

  • raw string 类型 原生字符串类型 raw string是不包含对转义符再次转义的字符串;
  • string 类型,更繁琐

re库的另一种等价用法

函数说明
regex.search()在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
regex.match()从一个字符串的开始位置起匹配正则表达式,返回match对象
regex.findall()搜索字符串,以列表类型返回全部能匹配的子串
regex.split()将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
regex.finditer()搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
regex.sub()在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

Match 对象的属性

属性说明
.string待匹配文本
.re匹配时使用的pattern对象(正则表达式) 被compile 编译过的
.pos正则表达式搜索文本的开始位置
.endpos正则表达式搜索文本的结束位置

Match 对象的方法

属性说明
.group(0)获得匹配后的字符串
.start()匹配字符串在原始字符串的开始位置
.end()匹配字符串在原始字符串的结束位置
.span()返回(.start(),.end())

列表 [ ‘ss’,‘aaa’]
元组 (‘aaa’,) 类似列表一旦创建不可更改
字典 { ‘a’:‘123’} 键值对
集合{‘aa’,‘vv’} 不可重复

贪婪匹配
Re库默认采用贪婪匹配,即输出匹配最长的子串

最小匹配 ?

最小匹配操作符

操作符说明
*?前一个字符串 0次或无限次扩展,最小匹配
+?前一个字符串 1次或无限次扩展,最小匹配
??前一个字符串 0 次或4次扩展,最小匹配
{m,n}?前一个字符串 m次至 n次扩展,最小匹配

re 到 regex 的转换
regex = re.compile()

单元10 Scrapy框架

Scrapy爬虫框架结构
“5+2” 结构
5个模块和2个中间件

在这里插入图片描述
模块解释

模块解释
SPIDERS解析Downloader 返回的响应(Response) 产生爬取项(scraped item) 产生额外的爬取请求(request)
ENGINE不需要用户修改 控制所有模块之间的数据流,根据条件触发事件
SCHEDULER不需要用户修改 对所有爬取进行管理调度
DOWNLOADER根据请求下载页面不需要用户修改
ITEM PIPELINES以流水线方式处理Spider产生的爬取项。 由一组操作顺序组成,类似流水线,每一个操作是一个Item Pipeline 类型
Downloader Middleware实施Engine \Scheduler 和 Downloader 之间进行 用户可配置的控制
Spider Middleware对请求和爬取项再处理

requests vs. Scrapy

requestsScrapy
页面级爬虫网站级爬虫
功能库框架
并发性考虑不足,性能较差并发性好,性能较高
重点在于页面下载重点在于爬虫结构
定制灵活一般定制灵活,深度定制困难
上手十分简单入门稍难

Scrapy 命令行格式
scrapy <command> [options] [args]

Scrapy 常用命令

命令说明格式
startproject创建一个新工程scrapy startproject <name> [dir]
genspider创建一个爬虫scrapy genspider []options<name><domain>
settings获得爬虫的配置信息scrapy setting [options]
crawl运行一个爬虫scrapy crawl <spider>
list列出工程中的所有爬虫scrapy list
shell启动URL 命令行scrapy shell [url]

单元10 Scrapy 爬虫基本使用

parse() 用于处理响应Response,解析内容形成字典发现新的URL 爬取请求。

# -*- coding: utf-8 -*-
import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'
    allowed_domains = ['python123.io']
    start_urls = ['http://python123.io/ws/demo.html']

    def parse(self, response):
        pass

在这里插入图片描述
yield 关键字
yield 生成器
生成器是一个不断产生值得函数
包含yield 语句的函数是一个 生成器
生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值,不用预先计算出结果根据现有的值进行计算并返回。

def fen(n):
	for i in range(n):
		yield i**2 
	# 反回  1 - n 数的平方  每次执行后返回一下  ,然后直接打印即可 

例如下面的例子 不需要创建 ls 列表 节省内存
在这里插入图片描述
生成器的优势

  • 更节省存储空间
  • 相应更灵活
  • 使用更灵活

Request类

属性或方法说明
.url
.method对应的请求方法 ‘GET’,“POST” 等
.headers字典类型风格的请求头
.body请求主体,字符串类型
.meta用户添加的扩展信息,在Scrapy 内部模块之间传递信息使用
.copy()复制该请求

Response 类型

属性或方法说明
.urlResponse 对应的请求URL地址
.statusHTTP状态码,默认是200
.headersResponse 对应的头部信息
.bodyResponse 对应的内容信息,字符串类型
.flags一组标记
.request产生Response类型对应的Request 对象
.copy()复制该响应

Item类
class scrapy.item.Item()

  • Item 对象标识从一个HTML页面张提取的信息内容,
  • 由 Spider 生成, 由ITem Pipeline 处理
  • Item类似字典类型,可以按照字典类型操作
    Scrapy爬虫直接提起信息的方法
    Scrapy 爬虫支持多种HTML信息提取方法
  • Beautiful Soup
  • lxml
  • re
  • Xpath Selector
  • CSS Selector

CSS Selector 的基本使用
<HTML>.css('a::attr(href)').extract()

单元12 股票爬虫

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2023年下半年网络工程师案例分析真题答案解析 R1] ip route-static 0.0.0.0 0.0.0.0 GigabitEthemet2/0/1 (3) track (4) R1 to R2 //配置R1的缺省路由,联动BFD使得R1到2的流量优先走R1->S1->R2链路,当此链路发生故障时,流量切换到R1->R3->R2链路上。当同一VLAN内也需要网络隔离时,我们可采用交换机的(2)功能,若在配置了二层隔离后,部分主机有互通的需求,则可在需求主机的网关上配置(3)功能。不需要,MAC地址是数据链路层封装以太帧的地址标识。 阅读详情

相关推荐

虚拟机扩容——非LVM分区

虚拟机扩容——非LVM分区

ytraister的博客 3905

Python-1-解决异常:“ImportError: lxml not found, please install it“

设置->项目->项目解释器。 这将向您显示运行项目的解释器的详细信息。lxml应该在包的表中。如果没有,您可以按窗口右上角的加号图标并输入lxml,然后继续安装。 原文: 2017年12月8日 上午5:58 发件人 Apple 5. 1.1 Legal: Privacy - Data Collection and Storage Guideline 5.1.1 - Legal - Privacy - Data Collection and Stor

IOT_LI的专栏 6619

无需上下文,MCP新机制让大模型主动“提需”:节约 98% token 开销,并保持准确率基本不变!

值得注意的是,MCP 协议定义的服务器描述通常较为简洁。为了提升匹配效果,我们引入 Qwen2.5-72b-Instruct 模型,对所有服务器的原始资料(通常为 ReadMe 文档)进行总结提炼,参考其 capabilities、features、usage patterns 等要素,生成服务器的 summary 信息,作为相对详尽的描述文本用于匹配。然而,现有的 MCP 调用机制下,所有工具的描述信息都被注入大模型的系统提示词,导致了非常长的上下文开销,也为大模型的表现带来了影响,降低了模型的性能。

我爱计算机视觉 1171

python安装lxml库出错_Python:ImportError:找不到lxml,请安装

I have the following code (in PyCharm (MacOS)):import pandas as pdfiddy_states = pd.read_html('https://simple.wikipedia.org/wiki/List_of_U.S._states')print(fiddy_states)And I get the following error:/...

weixin_39828783的博客 3950

RK3568开发板Debian系统屏幕旋转终极指南:从临时调整到永久设置

本文提供了RK3568开发板在Debian系统下实现屏幕旋转的完整解决方案。从使用xrandr命令进行临时调整,到修改X11配置文件实现永久设置,详细讲解了操作步骤与核心原理。指南还涵盖了多屏异显配置、触摸屏坐标校准等进阶技巧,帮助开发者彻底解决显示方向问题。

weixin_29181861的博客 389

小程序 video 控制器外观调整_Kessil 360X Tuna Sun无线控制器使用分享

之前分享了Kessil 360X Tuna Sun开箱记录,时间关系,没来得及使用WiFi Dongle无线控制器。昨晚抽空实操了一下,做个操作记录,希望对大家有参考Kessil无线模块操作指南官方视频英文教程配中文字幕,非常详尽语速较快,重点位置可以暂停操作点击边框调出视频工具条1、拆包取控制器,保存二维码Kessil WiFi Dongle包装打开包装就能看到Kessil无线控制模...

weixin_39759060的博客 4733

爬虫时安装好了lxml,但是还是报错(ImportError: lxml not found, please install it)

神奇的是,在pycharm中print(data)竟然成功了。 过了一段时间,再次在jupyter中运行,运行出来了,也不知道刚才为何会报错。

Triumph19的博客 3003

手把手教你学pcie--内存管理和保护机制(一):MPU与其他内存管理和保护机制详解

MPU(Memory Protection Unit)是一种专门用于 ​。,这些机制通常协同工作,形成多层防御体系,兼顾安全性、性能和灵活性。

MHD0815的博客 279

python安装lxml库出错,Python:ImportError:找不到lxml,请安装

I have the following code (in PyCharm (MacOS)):import pandas as pdfiddy_states = pd.read_html('https://simple.wikipedia.org/wiki/List_of_U.S._states')print(fiddy_states)And I get the following error:/...

weixin_39648432的博客 1618

仅使用 Python 创建的 Web 应用程序(前端版本)第03章Streamlit-多页面

接下来,我们将解释多页面切换。Streamlit 没有“多页面”或“页面路由”等功能。另一方面,通过根据用户动作切换要执行的功能,可以使其看起来好像存在“多个页面”。注意:我认为它类似于 SinglePageApplication (SPA)。然而,根据 React、Vue 等中使用的 URL 路径来更改页面的路由很困难。还有一个用于获取查询参数的实验性 API,但如果您确实需要这种功能,我认为认真尝试编写 React 或 Vue 是个好主意。我们来看一个通过按下按钮来切换页面的示例,如下所示。

xianyinsuifeng的博客 1327

YOLOv11改进 | 检测头篇 | 利用动态蛇形卷积DySnakeConv改进yolov11分割检测头(全网独家首发,Segment)

本文给大家带来的最新改进机制是一种我进行优化的专用于分割的检测头,在分割的过程中,最困难的无非就是边缘的检测,动态蛇形卷积(Dynamic Snake Convolution)通过自适应地聚焦于细长和迂回的局部结构,准确地捕捉管状结构的特征。这种卷积方法的核心思想是,通过动态形状的卷积核来增强感知能力,针对管状结构的特征提取进行优化,所以将这个卷积针对于YOLOv11的分割头进行融合是非常合适的,当然本文的检测头也支持用于目标检测,但是我将其设计出来是主要为了分割的读者使用的。

Snu77的博客 3429

python 3.6 lxml标准库lxml的安装及etree的使用注意

错误提示: from lxml import etree ModuleNotFoundError: No module named ‘lxml’ 解决办法: 据我所知,python 3.5之后的lxml模块里面不再包含etree,那么要怎么解决这个问题呢? lxml模块下的etree函数的使用问题,部分lxml模块不再支持etree方法,因此只能想办法下载了etree,我的python版本是3.6...

i94plmm的博客 2993

【WRF-Urban数据集】 WRF 模型城市冠层参数 GloUCP 的使用

【数据集】 WRF 模型城市冠层参数 GloUCP 的使用

WW、forever的博客 478

Datawhale 爬虫组队学习 Task 1

Datawhale 爬虫组队学习 Task 1 之前也参加过Python基础组队学习,但学习了一天就没有后续了。在3、4月份通过自己看书、看视频,把Python基础知识点都过了一遍。现在想学习爬虫,希望自己能坚持下去。 1.1 学习get与post请求 在Python中实现HTTP请求比较常用的是两个库——Urllib库和Requests库。 Python3中将之前的Urllib和Urllib2整...

Y_Jireh的博客 431

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

DataWhale 组队学习爬虫 Task1

使用urllib库 1. 使用urlopen实现简单的get请求 import urllib.request url = 'http://www.baidu.com' response = urllib.request.urlopen(url) print(type(response)) #返回response的类型 response是一个HTTPResponse类型的对...

方糖 262

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Datawhale爬虫组队学习Task 03

一、IP代理为什么会出现IP被封如何应对IP被封的问题如何获取代理IP地址使用代理确认代理IP地址有效性改进:确认网站title完整代码关于http和https代理二、IP代理selenium高级-查找元素:高级-页面交互:高级-等待页面加载(wait)三、session和cookie前置:动态网页和静态网页静态网页动态网页http1.0session和cookiessessioncookies...

weixin_37388706的博客 4795

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Datawhale爬虫-Task1

写在前面 这是第二次参加Datawhale的组队学习活动,非常感谢遇到这个平台,让我开始系统地去学些什么,而不是漫无目的地到处学点皮毛。 这次的学习内容是:Python爬虫编程实践,学习目的: 掌握基础的爬虫知识,并转换为未来的一些实用技能(嗯哼 借机消化之前拉勾教育活动时买的《52讲轻松搞定网络爬虫》 学习笔记 首先几个思维导图(来源:公众号:数林觅风 ),看完北理嵩天教授-《Python网...

qq_34446027的博客 388

Datawhale爬虫组队学习Task 01

一、认识爬虫二、必备网页基础知识三、爬虫基本步骤四、Request库4.1 Requests请求方式:get与post4.2 Requests的两个重要对象五、Request库的基本应用5.1 爬取python之禅 (requests.get的应用)5.2 金山词霸 (requests.post的应用)5.3 进阶:爬取豆瓣电影 一、认识爬虫 爬虫:一段自动抓取互联网信息的程序,即从互联网中的一...

weixin_37388706的博客 288

今年最后一场组队学习!

Datawhale学习开源贡献:Datawhale团队本月组队学习,包含了人工智能(含机器学习、深度学习)、数据科学、编程实践、计算机科学4个模块,共11个学习内容。文末有学习地址关于...

Datawhale 1120

Datawhale--组队学习第12期--python爬虫基础学习---task0/task1环境配置和网页请求基础

先修知识:task0(基本类库安装,git,anaconda,文本处理) Task0(前置):需要自己安装有关环境,学习git(b站),下载有关driverChromedriver 作用 驱动浏览器(一个驱动程序,配合浏览器一起使用),满足一些爬虫的需要,需花一定精力参考配置教程再使用,后面说跟自动化测试有关…后续补上介绍 Task01:html等有关知识,api使用,request-get使...

weixin_44064434的博客 4445

DataWhale 组队学习爬虫 Task2

任务描述: 2.1 学习beautifulsoup 学习beautifulsoup,并使用beautifulsoup提取内容。 使用beautifulsoup提取丁香园论坛的回复内容。 丁香园直通点:http://www.dxy.cn/bbs/thread/626626#626626 。 参考资料:https://blog.youkuaiyun.com/wwq114/ar...

方糖 372

Python爬虫编程实践 Task03(知识梳理脑图+全部资源教程)

Python爬虫编程实践 本次跟随Datawhale组队学习Python爬虫,希望能有所收获。Datawhale是一个很好的开源组织,会组织很多免费的知识学习。 附上本次组队学习的计划和教程资料,即使没有当时加入组队学习,有兴趣的话从现在开始学习也不晚哦~ 现在学习喜欢用脑图的方式,知识点清晰明了,易于查找和复习,希望也可以帮助大家梳理知识脉络。 一、Task03 链接:https://pan....

RexT1的博客 255

Python爬虫编程实践 Task02(知识梳理脑图+全部资源教程)

Python爬虫编程实践 本次跟随Datawhale组队学习Python爬虫,希望能有所收获。Datawhale是一个很好的开源组织,会组织很多免费的知识学习。 附上本次组队学习的计划和教程资料,即使没有当时加入组队学习,有兴趣的话从现在开始学习也不晚哦~ 现在学习喜欢用脑图的方式,知识点清晰明了,易于查找和复习,希望也可以帮助大家梳理知识脉络。 一、Task02 链接:https://pan....

RexT1的博客 470

Datawhale 爬虫组队学习 Task 3

Task 3: 3.1 安装selenium并学习 1、安装selenium并学习。 2、使用selenium模拟登陆163邮箱。 安装Selenium Selenium是个自动化测试工具,也课用来解决动态网页的加载和渲染问题。Selenium可以驱动浏览器模拟人的操作,支持各种浏览器,包括Chrome、Safari、firefox等主流界面式浏览器。 Seleni...

Y_Jireh的博客 261

爬虫组队学习Task01_爬取豆瓣T250

1. 开发者工具检查网页 Chrome浏览器→“更多工具”→ “开发者工具”(F12快捷键) Chrome提供的开发者工具如下: Elements: 允许用户从浏览器的角度来观察网页,用户可以借此看到Chrome渲染页面所需要的HTML、CSS和DOM(Document Object Model)对象。 (检查和编辑页面的HTML与CSS:选中并双击元素就可以编辑元素. e.x.将“pytho...

weixin_43868320的博客 481

python简单爬虫,获取豆瓣top250书单(datawhale组队学习task4)

自学简单爬虫,给出了豆瓣top250书本的爬虫代码

freshman的博客 2968
上一篇: mysql 排序后 分页 第一页数据和第二页数据部分数据重复问题
下一篇: docker设置自动重启
happytaohaha
博客等级 码龄9年 37粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值