当前位置: 首页 > news >正文

超简单小白爬虫急速五分钟上手教程

1. 思路:

1.首先明确你要爬什么

这次举例电影榜单top100,豆瓣最近不知道是不是服务器崩了一直打不开

内容无非是:电影名称 上映时间 评分 --->这就是我们需要爬取的具体信息

2.写脚本


2. 知识点:

1.只要会python里面的fp文件打开写入,for循环
2.csv(直接excel表格就可以打开)

3.XPath路径语法

理解:
1..(点)

含义:表示当前节点位置,也就是dd内

2.//(双斜杠)

含义:表示不限层级的搜索,也就是不管嵌套

3.p[@class="name"]

含义:找到一个class属性等于"name"<p>标签。

p是标签名。

[]里面是过滤条件。

@符号表示是“属性”。

4./a(单斜杠 + a)

含义直接子级,也就是找到那个标签下的a

5./text()

含义取文本内容,也就是夹在中间的那些文字(电影名)

连起来:
. // p[@class="name"] / a / text()

3. 具体过程

以猫眼电影举例:https://www.maoyan.com/board/4?offset=10

1.导包

import csv import requests # 用于发送网络请求 from lxml import etree # lxml第三方网页解析库

2.拿到html网页所有信息

我们爬的是一个网页,那么怎么让python拿到所需网页的具体内容

那就得用到request包了,负责响应我们的请求

具体代码

url = f"https://www.maoyan.com/board/4?offset={x}" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", #为了伪装人类 "Cookie": "....", #这里的cookie放你自己的,那个f12里面的network就可以查看 "Referer": "https://www.maoyan.com/board/4", #可选,为了伪装人类 "Host": "www.maoyan.com", #可选,为了伪装人类 } resp = requests.get(url, headers=headers, timeout=10) html = resp.text ​ parse = etree.HTML(html) //lxml库中的etree可以解析网页拿到html代码

3.筛选拿到的html信息,为了找到我们所需的电影具体信息

打开url按f12,进入查看器,找到我们所需要的电影名称,上映时间,评分

发现dd(Definition Description)容器存着每一部电影

打开看细节

以电影名举例:(这里使用本人自创简写路径格式):

dd/class="name"的p/a

这个东西要是拿到了就拿到了电影标题,转换成

. // p[@class="name"] / a / text()

具体代码:

all_dd = parse.xpath("//dd") ​ for dd in all_dd: name = dd.xpath('.//p[@class="name"]/a/text()')[0].strip() rtime = dd.xpath('.//p[@class="releasetime"]/text()')[0].strip() integ = dd.xpath('.//i[@class="integer"]/text()')[0].strip() fra = dd.xpath('.//i[@class="fraction"]/text()')[0].strip() score = integ + fra ​ movie_info = { "name": name, "time": rtime, "score": score, } print(movie_info)

4.综合代码

import csv import requests # 用于发送网络请求 from lxml import etree # lxml第三方网页解析库 ​ ​ for x in range(0, 100, 10): url = f"https://www.maoyan.com/board/4?offset={x}" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Cookie": "...", "Referer": "https://www.maoyan.com/board/4", "Host": "www.maoyan.com", } resp = requests.get(url, headers=headers, timeout=10) html = resp.text parse = etree.HTML(html) all_dd = parse.xpath("//dd") for dd in all_dd: name = dd.xpath('.//p[@class="name"]/a/text()')[0].strip() rtime = dd.xpath('.//p[@class="releasetime"]/text()')[0].strip() integ = dd.xpath('.//i[@class="integer"]/text()')[0].strip() fra = dd.xpath('.//i[@class="fraction"]/text()')[0].strip() score = integ + fra ​ movie_info = { "name": name, "time": rtime, "score": score, } print(movie_info)

5.转换成表格csv

import csv import requests # 用于发送网络请求 from lxml import etree # lxml第三方网页解析库 ​ with open("movie.csv", "w", encoding="utf_8_sig", newline="") as fp: fieldnames = ["name", "time", "score"] writer = csv.DictWriter(fp, fieldnames=fieldnames) writer.writeheader() ​ for x in range(0,100,10): url = f"https://www.maoyan.com/board/4?offset={x}" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Cookie": "...", "Referer": "https://www.maoyan.com/board/4", "Host": "www.maoyan.com", } resp = requests.get(url,headers=headers,timeout=10) html = resp.text parse = etree.HTML(html) all_dd = parse.xpath('//dd') for dd in all_dd: name = dd.xpath('.//p[@class="name"]/a/text()')[0].strip() rtime = dd.xpath('.//p[@class="releasetime"]/text()')[0].strip() integ = dd.xpath('.//i[@class="integer"]/text()')[0].strip() fra = dd.xpath('.//i[@class="fraction"]/text()')[0].strip() score = integ + fra ​ movie_info = { "name": name, "time": rtime, "score": score, } writer.writerow(movie_info) ​
http://www.jsqmd.com/news/582592/

相关文章:

  • 119. 使用 Fluentd concat 过滤器插件在牧场日志中串接多行日志
  • 当HTTPS上传太慢时,我是如何用Minio Java SDK在后端搞定大文件分片上传的
  • Java调用C/C++库从未如此简单:3步实现JNI替代方案,性能提升40%的FFM实测报告
  • 2026最新舞台灯光推荐!国内优质舞台灯光工厂权威榜单发布 - 十大品牌榜
  • 2026最新贵州避暑推荐!打卡地/风景区/景区/度假村权威榜单发布,助力消费者找到心仪的避暑好去处 - 十大品牌榜
  • 2026年青少年护脊床垫推荐:五家优选品牌深度解析 - 科技焦点
  • SLCAN协议适配器:低成本CAN调试方案与Linux内核集成
  • OpenClaw技能调试:千问3.5-35B-A3B-FP8任务失败排查指南
  • 如何选择轻量级轮播插件实现响应式设计?前端开发必备解决方案
  • 2026最新宴会厅灯光生产厂家推荐!权威榜单助力精准选型 - 十大品牌榜
  • 广州外贸行业网站SEO优化的重点内容是什么
  • 支付宝立减金回收(方法、流程、折扣) - 京顺回收
  • 网站IP属地是如何实现的?能用IP查询工具自查真实归属地吗?
  • 告别ActiveX!在Vue中优雅集成海康/大华/宇视监控插件的现代方案
  • 高校科研如何提升成果产业化能力?
  • OBS单个视频源独立录制高效解决方案:从场景到实现的全流程指南
  • 网站 SEO 优化工具如何进行多渠道分析_如何利用网站 SEO 优化工具进行竞争对手分析
  • 2022金砖技能大赛网络取证赛题复现【Win内存镜像分析】
  • 2026最新黄果树周边游推荐!贵阳/安顺优质景区权威榜单发布,助力游客解锁舒适省心的黔中之旅 - 十大品牌榜
  • 3个技巧让Sketch设计稿命名效率提升300%:Rename It插件终极指南
  • 别再为AD9833的方波频率发愁了!STM32F407 HAL库实战避坑指南
  • 如何利用 HTML 结构优化网页内容结构_通过 HTML 结构优化内容层次化对 SEO 的作用是什么
  • Ace Data Cloud reCAPTCHA 验证服务 API 使用指南
  • 科技企业如何利用智能手段提升研发效率?
  • 3分钟解锁专业播放体验:MPV_PlayKit让小白也能玩转顶级播放器
  • 120. Kubernetes 版本/配置更新的排水和节点池配置更新的draining差异
  • 运维养龙虾--腾讯云 CloudQ 上线:把企业云上治理,装进你每天都在用的聊天框
  • 3分钟掌握ppInk:Windows上最高效的屏幕标注工具完全指南
  • 购物中心Wi-Fi与有线网如何共存?基于eNSP的MSTP+VRRP高可用网络设计与避坑指南
  • 2026最新氮气罐供应商推荐!东北/吉林/长春优质服务商权威榜单发布 - 十大品牌榜