2019-02.24(review)

1.小说爬取(spider)

参照链接:使用Beautiful Soup爬取小说(bs4 + urllib)

a.BeautifulSoup

soup = BeautifulSoup(html_doc, 'html.parser')

# print(soup.prettify())

# tag 的内容,名称等。。。可用于查找文本内容

print(soup.title)//print(soup.title.name)//print(soup.title.string)//print(soup.title.parent.name)// print(soup.body.children.name) # children 选项

print(soup.p)//print(soup.p.name)//print(soup.p.get_text())# 获取所有文字内容


.text 与 .string 的区别于使用范围: 是否包含多个子节点,多个只能用text,返回类型有区别

# tag中包含多个字符串 [2] ,可以使用 .strings 来循环获取

# 输出的字符串中可能包含了很多空格或空行,使用 .stripped_strings 可以去除多余空白内容


print(soup.a.attrs)# 获取所有的属性值  可使用属性值进行目标位置确认,或者 href,scr,img等获取

# 属性值的获取方式 : ["attrs"] , .get("attrs ")

print(soup.a['class'])  // print(soup.a.get('href'))


# 查找,遍历

# find_all( name , attrs , recursive , string , **kwargs )

'''

name 参数可以查找所有名字为 name 的tag,字符串对象会被自动忽略掉,

keyword 参数:搜索指定名字的属性时可以使用的参数值包括 字符串 , 正则表达式 , 列表, True .

string 参数可以搜搜文档中的字符串内容.

limit 参数限制返回结果的数量 也可理解find 为 limit= 1

只想搜索tag的直接子节点,可以使用参数 recursive=False,默认为True: 搜索所有子孙节点

'''

eg:

print(soup.find(id="link3"))//print(soup.find_all('a'))

# 关键字: class 改为 class_

for linkin soup.find_all('a', class_="sister"):

    print(link['id'], ':', link.get('href'))


Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:Tag , NavigableString , BeautifulSoup , Comment .

(1)tag

soup = BeautifulSoup('Extremely bold')

tag = soup.b

# tag 的属性值更改获取 , tag的属性操作方法与字典一样

tag.name ='change'

print(soup.change)

tag["class"] ='blod_change'

print(tag.get('class'))

(2) NavigableString 类来包装tag中的字符串

一个 NavigableString 字符串与Python中的Unicode字符串相同,

并且还支持包含在 遍历文档树 和 搜索文档树 中的一些特性.

通过 unicode() 方法可以直接将 NavigableString 对象转换成Unicode字符串

# tag中包含的字符串不能编辑,但是可以被替换成其它的字符串,用 replace_with()

(3)comment

# Comment 对象是一个特殊类型的 NavigableString 对象

(4)相关知识点

.parent 属性来获取某个元素的父节点

.parents 属性可以递归得到元素的所有父辈节点

.next_sibling 和 .previous_sibling 属性来查询兄弟节点

.next_siblings 和 .previous_siblings 属性可以对当前节点的兄弟节点迭代输出

.next_element 属性指向解析过程中下一个被解析的对象(字符串或tag),结果可能与 .next_sibling 相同,但通常是不一样的.

# Beautiful Soup支持大部分的CSS选择器: .select() 方法中传入字符串参数, 即可使用CSS选择器的语法找到tag

b.小说内容实战

小说章节内容爬取使用BeautifulSoup进行解析文本内容;

针对小说章节列表进行分析,return(list) 小说章节名+链接;

使用函数def实现以上功能,并进行代码整合。

注意:

文本解析时的空格与换行符;

进度显示:

#打印爬取进度

sys.stdout.write("已下载:%.3f%%"% float(index/numbers) +'\r')

sys.stdout.flush()                index +=1


2.python运算符

Python比较运算符:

Python赋值运算符:+=,-=, ......etc简化操作

Python位运算符

python逻辑运算符:与或非,and,or,not

身份运算符与成员运算符:in//not in;is//not is:

运算符优先等级(从高到底):


3.user_agent 和 IP

参照资料链接: 使用User Agent和代理IP隐藏身份

User Agent存放于Headers中,服务器就是通过查看Headers中的User Agent来判断是谁在访问。(模拟浏览器访问)对于在程序过程中访问网页,发送请求时(urlopen/requests.get)需要在请求总添加 “headers=header”或使用add_header()方法,添加headers(session/request.Request(url))。

IP设置可大致分为以下三个步骤:

s:

需要注意:

这里示例使用的代理IP为开放代理,若使用加密代理第一步需:{'http' : 'user:password @ ip:port}:

可以使用random.choice(ip)//random.choice(user_agent) :此处ip和user_agent 为一组

random.choice():查找内容可以为 列表,元组或字符串

requests:requests.get(url = http_url, headers = headers, proxies = proxies, timeout =30)

针对第三步:request.install_opener(opener) 目的是将前面的内容作为默认设置保存,后续使用response = request.urlopen(url)中就已经针对ip设置, 或者也可使用opener .urlopen(url) 进行局部使用


4.不同级别的范数在机器学习中的应用

参考链接:范数与距离的关系以及在机器学习中的应用


L1范数和L2范数,用于机器学习的L1正则化、L2正则化。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)。

其作用是:

L1正则化是指权值向量w中各个元素的绝对值之和,可以产生稀疏权值矩阵(稀疏矩阵指的是很多元素为0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是0. ),即产生一个稀疏模型,可以用于特征选择;

L2正则化是指权值向量w中各个元素的平方和然后再求平方根,可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合。


常用的向量的范数:

L1范数(曼哈顿距离):  ||x|| 为x向量各个元素绝对值之和。

L2范数(欧式距离):  ||x||为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或者Frobenius范数

Lp范数(闵可夫斯基距离(Minkowski Distance)):  ||x||为x向量各个元素绝对值p次方和的1/p次方

L∞范数(切比雪夫距离):  ||x||为x向量各个元素绝对值最大那个元素的绝对值,如下:




Mahalanobis距离:也称作马氏距离。在近邻分类法中,常采用欧式距离和马氏距离。

m

其中p是一个变参数。

当p=1时,就是曼哈顿距离,

当p=2时,就是欧氏距离,

当p→∞时,就是切比雪夫距离,     

根据变参数的不同,闵氏距离可以表示一类的距离。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容