爬虫学习笔记(四)
下面我们做一个小项目,爬取猫眼电影排行 目标我们要提取出猫眼电影 TOP100 的电影名称、时间、评分、图片等信息,提取的站点 URL 为 http://maoyan.com/board/4 提取的结果会以文件形式保存下来。 抓取分析我们需要抓取的目标站点为 http://maoyan.com/board/4 打开之后便可以查看到榜单信息 将网页滚动到最下方,可以发现有分页的列表,直接点击第 2 页,观察页面的 URL 和内容发生了怎样的变化。 可以发现页面的 URL 变成 http://maoyan.com/board/4?offset=10, 比之前的 URL 多了一个参数,那就是 offset=10,而目前显示的结果是排行 11 - 20 名的电影,初步推断这是一个偏移量的参数。再点击下一页,发现页面的 URL 变成了 http://maoyan.com/board/4?offset=20, 参数 offset 变成了 20,而显示的结果是排行 21 - 30 的电影。 由此可以总结出规律,offset 代表偏移量值,如果偏移量为 n,则显示的电影序号就是...
爬虫学习笔记(三)
正则表达式在上一小节我们拿到了豆瓣喜剧电影排行榜,但是数据非常杂乱,有很多我们不想要的内容。该怎么办呢。这里我们就要引用一个重要的内容,那就是正则表达式 正则表达式是什么正则表达式,简称Regex,是一种强大的文本处理语言,用于描述字符串的模式。它能够帮助用户在文本中进行复杂的搜索、匹配、替换和提取操作。正则表达式的基本理念是用有限的符号来定义和匹配无限的字符串序列。 基本概念正则表达式是一个字符串,其中包含普通字符(如字母和数字)和特殊字符(元字符),用于定义一个搜索模式。它广泛应用于各种编程语言、文本编辑器和命令行工具中,如JavaScript、Python、grep等。 主要用途 搜索:在大量文本中查找符合特定模式的字符串 验证:检查字符串是否符合特定格式,如邮箱地址、电话号码的格式验证。 替换:根据模式替换文本,例如批量修改文档中的某些部分。 提取:从文本中提取符合模式的信息,如从网页中抓取链接。 实例引入接下来通过一个例子看一下正则表达式的用法 打开开源中国提供的正则表达式测试工具 http://tool.oschina.net/regex/...
爬虫学习笔记(二)
介绍一个爬虫中非常重要的库requests在介绍requests库之前,先介绍以下基本的http概念。 http协议HTTP,超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法,HTTP是一种基于”请求与响应”模式的、无状态的应用层协议。HTTP协议采用URL作为定位网络资源的的标识符。http://host[:post][path]host:合法的Internet主机域名或ip地址port:端口号,缺省为80path:请求资源的路径 HTTP...
爬虫爬取贴吧评论
介绍一个小项目,通过爬虫爬取贴吧评论并保存到本地 导入相关的库1234import csvimport requestsimport reimport time 打开百度贴吧随便选择一篇帖子,检查网页源代码,我们发现评论信息都在源代码中,所以直接解析网页源代码即可 用requests发送请求123456url = 'https://tieba.baidu.com/p/9285638137?pn=1'headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'}resp = requests.get(url,headers =...
hexo博客上传到github出现spawn failed错误
我们在使用hexo博客上传到github时,有时候会出现spawn failed错误。 这种情况一般是由网络原因引起的,这里提供一种免费加速github的方法。 可以下载一个免费的steam++,连接放下面了。 https://steampp.net/
爬虫学习笔记(一)
使用python内置库urllib来向网页发出请求 123from urllib import requesturl = "http://www.baidu.com" 通过urlopen函数实现对目标url的访问,并获取服务器返回的数据。 1resp = request.urlopen(url) 我们可以看一下resp是什么 1print(resp) 得到下列输出 resp是一个HTTP协议下的响应对象通过read()函数获取resp对象的内容 1print(resp.read()) 结果把整个百度官网的html信息全部返回到python终端的输出窗口了。我画红线的地方是b’,这代表bytes字节型,简言之,这种类型的数据会把中文进行编码,因此输出的这一大坨中我们不会看到任何一个中文汉字。通过检查html信息可以发现编码方式为utf-8。所以可以通过转码将网页信息转换为utf-8格式。 1print(resp.read().decode("utf-8")) 可以新建一个html文件把从resp中读取的内容保存起来。 123with...