- 博客(107)
- 收藏
- 关注
原创 爬虫-实战爬取虎扑ACG帖子
要求如下:爬取虎扑步行街 ACG 版面的数据,要求使用多线程来并发爬取。范围是第一页的所有帖子,每个帖子包含标题、主题内容和第一页的所有回复内容。最后打印出爬到的所有帖子的标题。。
2024-07-28 20:52:46
620
原创 爬虫-通过几个例子来说明并发以及多线程
什么是并发?并发,在中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个上运行,但任一个时刻点上只有一个程序在处理机上运行。嗯,字认识,但是连在一起就有点够呛,哈哈,开个玩笑。
2024-07-28 15:24:37
1659
原创 爬虫-存储数据
exce文件也被称为,其可以创建多个。每个工作表是由很多个组成。我们通过openpyxl来操作Excel文件。安装使用openpyxl中的Workbook类实例化了一个工作簿,即创建了一个空的Excel文件。前面也说了工作簿是由很多工作表组成的,通过wb.active选择了默认的工作表,title属性重命名了默认工作表。既然我们已经选择了工作表,那就应该往工作表中写入数据了,前面我们也说过,工作表是由很多单元格组成,我们上面就是往特定的单元格内写入数据。上面我们是通过字典赋值的方式写入的。
2024-07-16 15:07:57
1664
原创 爬虫-浏览器自动化
selenium是浏览器自动化测试框架,原本用于网页测试。但到了爬虫领域,它又成为了爬虫的好帮手。有了,我们便不再需要判断网页数据加载的方式,只要让自动控制浏览器,就像有双无形的手,控制着你的鼠标和键盘,自动地帮你干活。爬取数据?自动抢票?这些当然统统都不在话下。
2024-07-11 20:34:29
1408
原创 爬虫-爬取豆瓣读书所有数据
代码中我们封装了一个get_one_page_data()方法,参数是页数page,再结合for循环,实现了爬取了所有的数据。代码中我们创建了字典params,并为start键赋值为0,接着我们通过参数params吧定制的查询参数传递给。,并且随着页码的增加,小尾巴中数字部分也在增加。在此使用了time.sleep(1)来暂停1秒的目的是为了网站反爬虫,把我们给封了。中,我们只是获取了第一页的25条数据,剩余的9页数据如何爬取呢?开头的内容也是 URL 重要组成部分之一,被称为。
2024-07-08 15:33:13
523
原创 爬虫-豆瓣读书排行榜
获取数据环节需要用到库。安装方式也简单爬取页面用requests库来访问res长什么样呢?我们打印一下变量res的值是,怎么回事呢?
2024-07-04 16:56:36
783
原创 爬虫-网页基础
HTML:Hyper Text Markup Language, 超文本标记语言,是计算机语言的一种,由元素构成。由三大部分组成互联网中必不可少的一个要素是超链接,对应到HTML语言中就是a元素。分析:a元素的开始标签中有许多额外信息,这些信息就是元素的 属性。元素的属性需要写在开始标签中,写成 属性名称="属性值"。元素的属性是额外信息,不会直接展示给用户,而是提供给浏览器、程序解析使用。上面的例子中 href 和 target 是a元素的两条属性。注:属性值是用英文双引号,多个属性之间使用一个空格隔开
2024-07-03 17:34:51
1534
原创 爬虫-电影影评爬取
点击其头headers,拉到最下面,找到了Referer以及User-Agent,此值直接获取,(上面代码中的user-agent以自己电脑为准)。来说,进入此网页,打开开发者模式,点击Network->XHR,因为我们找的是评论,其英文是comment,如下我们找到了。result我们知道是获取出来的结果,但是.json的意义是什么?:字面意思是排序方式,而我们发现,短影评页的右上方的确是有这个选项的。同样是来源于headers中,有个Request URL,它的值是。后面的参数为查询参数,
2024-06-12 21:59:24
1249
原创 leetcode-最大连续1的个数
这个问题可以通过遍历数组并使用一个计数器来解决。我们可以从左到右遍历数组,每次遇到1就将计数器加1,遇到0就将计数器重置为0。同时,我们需要维护一个变量来记录遍历过程中遇到的最大的连续1的个数。
2024-03-11 09:57:03
391
原创 leetcode-岛屿的周长
要计算岛屿的周长,我们可以遍历整个网格,对于每个为陆地的格子,检查其四周(上、下、左、右)相邻的格子。如果相邻的格子是水域(或者是网格的边界,意味着在网格边缘的陆地),则说明这个方向对岛屿的周长做出了贡献。我们可以通过这样的方式来累加总的岛屿周长。
2024-03-06 08:55:58
469
原创 leetcode-重复的子字符串
与自身拼接,然后去掉新字符串首尾各一个字符,接着在这个新构造的字符串中查找原字符串。在新字符串中的位置不是起始位置(即位置不为 0),那么原字符串。必然能在这个新字符串中找到,而且不会出现在起始位置。可以由它的一个子串重复构成,那么在将。与自身拼接并去掉首尾字符后,原字符串。还可以利用一种巧妙的方法:将字符串。可以由它的一个子串重复多次构成。这个方法的原理是,如果字符串。
2024-03-04 09:43:52
570
原创 leetcode-字符串中的单词数
这个问题可以通过遍历字符串,当遇到非空格字符时,判断其前一个字符是否为空格,如果是,则说明这是一个新的单词的开始,计数器加一。最后返回计数器的值即可。
2024-03-02 08:52:51
395
原创 leetcode-字符串相加
题目中已经说明不能使用库函数直接将输入的字符串转换为整数。这就需要我们自己实现大数加法的逻辑,我们可以从两个字符串的最后一位开始,逐位相加,同时记录进位。如果某一位相加的结果超过10,那么需要向前进位。最后将结果转换为字符串返回。
2024-03-02 08:48:08
606
原创 leetcode-第三大的数
关键思路是维护一个大小为3的最小堆,这样堆顶始终是这个堆中最小的数,当堆的大小超过3时,我们可以弹出最小的数,最后堆中剩下的就是数组中最大的三个数。如果堆的大小小于3,说明不存在第三大的数,则返回堆中的最大数。先去重,然后降序排序,去重排序后的数组的长度大于等于3的时候,取下标为2的即为结果值,当去重后的数组长度小于3,取最大值即可。使用堆(特别是最小堆)来解决这个问题,可以帮助我们保持跟踪数组中最大的三个数。在Python中,我们可以使用标准库。你能设计一个时间复杂度。
2024-03-01 09:42:37
592
原创 leetcode-Fizz Buzz
412. Fizz Buzz本题直接按照所给的条件直接编码即可。class Solution: def fizzBuzz(self, n: int) -> List[str]: res = [] for i in range(1, n + 1): if i % 3 == 0 and i % 5 == 0: res.append("FizzBuzz") elif i % 3
2024-03-01 09:00:52
754
原创 leetcode-左叶子之和
深度优先搜索(DFS):深度优先搜索是一种通过递归来实现的算法,它可以用来遍历树的所有节点。在遍历过程中,当你发现一个左叶子节点(即该节点是其父节点的左子节点,并且它自己没有子节点)时,就将其值加到总和中。广度优先搜索(BFS):广度优先搜索通常使用队列来实现,它按层级遍历树的节点。在遍历过程中,同样检查是否遇到了左叶子节点,并累加其值。
2024-02-28 10:55:33
556
原创 leetcode-二进制手表
要解决这个问题,你可以通过遍历所有可能的小时和分钟组合,检查每个组合中亮着的LED灯的总数是否等于。为了找到所有符合条件的时间,需要使用位运算来计算每个小时和分钟组合中亮着的LED灯的数量。
2024-02-28 10:35:05
420
原创 leetcode-判断子序列
这个方法利用了“t的长度可能远大于s”和“可以接受预处理开销以换取整体效率提高”的特点。以下是对应的代码思路。,创建一个索引,以便快速跳过不匹配的字符。为了提高效率,可以预处理。对于进阶问题,如果有大量的。字符串需要检查它们是否为。
2024-02-26 09:39:20
469
原创 leetcode-找不同
从题意我们可以知道,虽然 t 是由 s组成,但是 t中又随机添加了一个字符,也就是相当于 t 包含 s,我们使用字典,将 t 转换成字典对应关系t_map,然后遍历 s 中的字符,若存在,则t_map中对应的键值减一,最后遍历t_map,键值不为0的key即为添加的。
2024-02-26 09:14:34
443
原创 leetcode-赎金信
中的字符在rans_map中,则相应的字符个数减一,然后遍历rans_map,若值大于0,这说明。映射成字符与字符个数的映射关系rans_map,然后遍历。中的字符是满足条件的,那我们使用字典,将。中的每个字符个数应该多于等于。
2024-02-24 09:24:55
739
原创 leetcode-猜数字大小
374. 猜数字大小题解:使用二分法class Solution: def guessNumber(self, n: int) -> int: start = 1 end = n while start <= end: mid = (start + end) // 2 res = guess(mid) if res == 0:
2024-02-23 09:30:13
542
原创 leetcode-两个数组的交集
可以使用哈希表来解决这个问题。首先遍历第一个数组 nums1,将其元素存入哈希表中。然后遍历第二个数组 nums2,检查哈希表中是否存在该元素,如果存在则将该元素添加到结果集中,并从哈希表中删除该元素。
2024-02-22 08:45:47
421
原创 leetcode-反转字符串中的元音字母
此题和前面的344题反转字符串基本一样,不同之处是:1.反转的是字符串中的元音字母,2.输入的是字符串不是数组。
2024-02-20 08:50:54
496
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人