300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Python实训day05pm【JS-DOM-获取元素节点对象 网络爬虫】

Python实训day05pm【JS-DOM-获取元素节点对象 网络爬虫】

时间:2021-03-30 23:02:41

相关推荐

Python实训day05pm【JS-DOM-获取元素节点对象 网络爬虫】

Python实训-15天-博客汇总表

目录

1、CSS选择器

2、网络爬虫

2.1、练习1

2.2、练习2

1、CSS选择器

.rank-body .book-mid-info .author a:nth-child(4)

Css选择器 css\js\python\...

定位页面元素:

css--->样式

js-->操作元素

python-->操作元素

class\id\标签【必须】

.d1

#d1

div

各种选择器之间的组合【必须】

div .d1 : div中的所有.d1(层级)

div.d1 : class属性的值为d1的那些div(并列)

div>d1 : div中所有的直接子元素.d1(直接层级)

伪类选择器【了解+会查询】

:first-child

:last-child

:nth-child()

:hover :active

等等

伪元素【了解+会查询】等等

<style>div div:nth-child(2) { /*:nth-child:选择的元素在家里排行老几*/background: red;}div div:nth-of-type(1) { /*:nth-of-type:是第几个div元素*/background: blue;}</style><body><div><p>pppp</p><div>第一行</div><div>第二行</div><div>第三行</div></div></body>

2、网络爬虫

2.1、练习1

1.扩展,爬取前100条数据

2.统计,在前100中,哪个类型的小说的数量最多,有多少?(下午的课堂来讲解)

# 1.扩展,爬取前100条数据# 2.统计,在前100中,哪个类型的小说的数量最多,有多少?(下午的课堂来讲解)import requestsfrom bs4 import BeautifulSoup as BS# 伪装成浏览器hds = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}bookinfos = {}; # mapfor i in range(5):resp = requests.get('/rank/yuepiao/year-month01-page{}/'.format(i + 1), headers=hds);ct = resp.content.decode('utf-8');bs = BS(ct, 'lxml');names = bs.select('.rank-body .book-mid-info h2 a');types = bs.select('.rank-body .book-mid-info .author a:nth-child(4)');# 定位元素后,要么就是获取属性值-->['属性名'],要么就是获取元素内容-->.get_text()。for i in range(20):name = names[i];tp = types[i];bookinfos[name.get_text()] = tp.get_text();print(len(bookinfos)) # 100print(bookinfos) # {'星门': '玄幻', '明克街13号': '都市', '大魏读书人': '仙侠', ...}'''统计,在前100中,哪个类型的小说的数量最多,有多少?(重中之重)基础是否扎实--->@1、对各种数据(结构)的操作是否熟练:字符串、集合、map、对象等@2、对面向对象的理解是否到位:封装、继承、多态、接口、构造、重写、重载等@3、对高级用法是否了解:IO、异常、多线程、反射、注解、枚举等@4、数据库的使用:单表多表的查询、内连接与外连接、分组与函数、事务处理@5、Servlet/jsp:Web流程的理解是否准确到位(提升)框架阶段 【势如破竹 ---> 2周左右,吃透】(高薪突破)企业技术阶段【高并发,高性能 高可用---->学习各种中间件的使用】'''# 1、取出所有的类型(取值)# print(dir(bookinfos)) # 查看方法['__class__', ... ]vs = list(bookinfos.values());print(vs) # ['玄幻', '都市', '仙侠', '科幻', '都市', '轻小说', '玄幻', '轻小说', ...]# 有哪些不同的类型?# list-->set:自动去重# python中有set吗?有!notsame = set(vs); # 所有的不重复的类型# 2、遍历,计算每个类型出现的次数。tj = {}; # 类型:次数(tj:统计)for v in notsame:tj[v] = vs.count(v); # count求v在vs集合中出现的次数ls = list(tj.items()); # [(键,值),(),(),()]ls.sort(key=lambda x: x[1], reverse=True)print(ls) # [('都市', 19), ('仙侠', 18), ('历史', 15), ('轻小说', 15), ('玄幻', 13), ...]

2.2、练习2

将某个(星门)小说按照章节下载到.txt文件中【下载免费部分】

思路(步骤):

1.请求小说目录,找到每个章节的超链接地址。

2.请求每个章节地址,获取章节内容,写入到txt文件中。

'''将某个(星门)小说按照章节下载到.txt文件中【下载免费部分】思路(步骤):1.请求小说目录,找到每个章节的超链接地址2.请求每个章节地址,获取章节内容,写入到txt文件中'''import requestsfrom bs4 import BeautifulSoup as BS# 伪装成浏览器hds = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}# 小说首页路径url = '/info/1027669580/#Catalog';resp = requests.get(url, headers=hds);ct = resp.content.decode('utf-8');# print(ct)print(ct.index('李家的剑')) # 19156 找到了,说明爬取到的html中包含我们想要的内容;使用BeautifulSoup解析即可bs = BS(ct, 'lxml');sa = bs.select('.volume-wrap .volume:first-child .book_name a'); #:nth-child(1)zjinfo = {}; # 名称:url地址for a in sa:zjinfo[a.get_text()] = 'https:' + a['href'];# print(zjinfo)# 2、请求每个章节地址,获取章节内容,写入到txt文件中# 做个demo:请求第一章的内容,保存到txt文件中u2 = '/chapter/Bo4cJRb-5zhY1sEsPcaxkg2/LH6CZhsVBjDgn4SMoDUcDQ2/';resp = requests.get(u2, headers=hds);ct = resp.content.decode('utf-8');print(ct.index('纯净的笑容')) # 19318 可以使用BS解析,获取想要的内容# print(ct)bs = BS(ct, 'lxml');sps = bs.select('.main-text-wrap .read-content p'); # 通过打印ct,再次确认元素选择器结构print(len(sps)); # 89:89个自然段的内容cts = [];# 遍历,获取每一个内容,放入到cts中for p in sps:cts.append(p.get_text());print(cts); # ['\u3000\u3000\u3000\u3000银城。', ...]# 写入文件f = open(r'C:\Users\lwx\Desktop\星门\{}'.format('第一章 巡检司.txt'), 'w');f.write('\n'.join(cts)); # 将cts中所有字符串拼接,使用\n换行,间隔f.close();

先五伦,后八德。人伦大道以此分。

君臣义,父子亲。君正臣忠护国心。

为人子,孝双亲。父慈子奉父子亲。

夫妇情,尽责任。妻贤夫爱情谊深。

兄弟序,长幼分。兄宽弟忍哥们亲。

朋友信,友情真。不论贫富视同仁。

孝为首,万善源。百善孝顺第一先。

生命体,父母赐。不孝敬老畜不如。

万宝失,可再得。万金难买父母身。

讲明理,兄弟情。同气连枝一母生。

忠字义,为诚心。天地人伦无假心。

信字解,人言诚。言而有信君子风。

礼为敬,待人先。非礼勿为敬为先。

义字理,合正道。正义善为无祸端。

廉字解,主清白。端端正正不贪财。

耻字义,须解开。知耻羞恶善德怀。

为人道,谨记怀。五伦八道永记怀。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。