文章目录:
- 概括:批量化、自动化、既有数据
-
-
- 分类
- 聚焦爬虫:完成某一项特点数据的采集
- 通用爬虫:声明内容都采集,都存下来
- 增量爬虫:既可以是聚焦爬虫 也可以是通用爬虫
- 当内容发生变化的时候,它可以增量的获取内容
- 暗网爬虫:既可以是聚焦爬虫 也可以是通用爬虫 还可以是增量爬虫
- 深网爬虫
-
-
- 了解爬虫的实现原理
- 直接使用代码去控制终端:App 浏览器
- 使用代码自己去发送请求
- C/B模型
- 使用代码去控制C、B,请求指定的数据
- 分析C、B是如何发送的请求,使用代码自己去实现请求的发送
- 第一步:获取网页内容(Requests库发送HTTP请求)
-
- 第二步:解析网页内容(BeautifulSoup库获取HTML网页结构内容信息)
-
- 第三步:储存(数据库) 或 得到更多信息(数据分析)
语言基础:Python语言基础 数据获取:爬虫全套视频 数据存储:MySQL 数据处理:NumPy、Pandas 数据可视化:Matplotlib、PyEcharts语言环境工具(Anaconda Prompt):Anaconda | The World’s Most Popular Data Science Platform
先注册账号 Anaconda Prompt输入(系统会自动打开一个网页):jupyter notebook 切换路径:cd.. 快捷键 查看所有快捷键:h 编辑状态切换——>未编辑状态:esc 未编辑状态——>编辑状态:enter 代码格式——>笔记模式:m 笔记模式——>代码格式:y 执行代码 创建空白行:alt + enter 向下选择:shift + enter 常用:ctrl + enter
1.不要爬取公民隐私数据 2.不要爬取受著作权保护的内容 3.不要爬取国家事务国防建设和尖端技术领域
4.请求数量和频率不能过高:否则可能无异于DDos攻击 5.有反扒限制就不要去爬取了:需要登录、验证码 6.查看网站的robots.txt文件:了解可爬取的网页路径范围
- HTTP:超文本传输协议
- 客户端和服务器之间的请求响应协议
-
-
-
- 请求方法
- Get:获得数据
- Post:创建数据
-
-
-
- 接收的响应数据类型
- HTML:text/html
- JSON:application/json
- HTML和JSON:text/html,application/json
- 任意类型:/*/
-
-
-
- 常见的状态码和状态消息
- 200 ok 客户端请求成功
- 300 Moved Permanently 重定向资源被永久移动到新地址
- 400 Bad Request 客户端不能被服务器所理解
- 401 Unauthorized 请求未经授权
- 403 Forbidden 服务器拒绝提供服务
- 404 Not Found 请求资源不存在
- 500 Internal Server Error 服务器发生不可预期的错误
- 503 Server Unavailable 服务器当前不能处理客户端的请求
- POST请求
- #请求行 协议版本
- POST/user/info?new_user=true HTTP/1.1
- #请求头 域名 资源路径 查询参数
- Host:www.douban.com/movie/top250?start=75&filter=unwatched
- User-Agent:curl/7.77.0
- Accept:*/*
- #请求体
- {
- "username":"刘鑫磊",
- "email":"123@qq.com"
- }
-
-
-
- GET请求
- #请求行
- GET/user/info?new_user=true HTTP/1.1
- #请求头
- Host:www.example.com
- User-Agent:curl/7.77.0
- Accept:*/*
- #状态行:协议版本 状态码 状态消息
- HTTP/1.1 200 OK
- #响应头
- Date:Fri,27 Jan 2023 02:10:48 GMT
- Content-Type:text/html;charset=utf-8
- #响应体
- <!DOCTYPE html>
- <head><title>首页</title></head>
- <body><h1>刘鑫磊</h1><p>非常棒</p></body>
- </html>
- #在终端输入(视图——>工具窗口——>终端):pip install requests
- import requests
-
- #把爬虫程序伪装成正常的浏览器
- #任意网页——>鼠标右键——>检查——>Network——>User-Agent——>复制过来
- headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}
-
- response=requests.get("https://movie.douban.com/top250",headers=headers)
- print(response)
- print(response.status_code)
- if response.ok:
- # 获取响应体内容
- print(response.text)
- else:
- print("请求失败")
- <!DOCTYPE HTML>
- <html>
- <body>
- <h1>我是标题</h1>
- <p>我是一段文字</p>
- </body>
- </html>
标题:<h1></h1> 文本段落:<p></p> 换行:<br> 图片:<img src="图片链接"> 链接:<a href="链接地址" target="_self"></a> target="_blank" 容器:<span></span> 内联元素不会独占一块,一行可写多个 盒子:<div></div> 块级 有序列表:<ol><li></li></ol> 无序列表:<ul><li></li></ul> 表格 <table> <thead> #头部 <tr> #行 <td></td> #列 </tr> <thead> <tbody> #主体 <tr> # 行 <td></td> # 列 </tr> </tbody> </table> class属性:定义元素的类名称,帮助我们分组 class="content" class="review"例子:“1.html”文件
<!DOCTYPE html> <html> <head> <title>我是标题</title> </head> <body> <h1>我是一级标题</h1> <h2>我是二级标题</h2> <h6>我是六级标题</h6> <p>我是文本段落</p> <br> <b>加粗字体</b> <i>斜体</i> <u>下划线</u> <img src="图片链接"> <a href="https://www.baidu.com" target="_self">百度链接</a> <div style="background-color:red"></div> <span></span> <ol> <li>我是第一项</li> <li>我是第二项</li> </ol> <ul> <li>我是第一项</li> <li>我是第二项</li> </ul> <table border="1"> <thead> <tr> <td>头部1</td> <td>头部2</td> </tr> <thead> <tbody> <tr> <td>111</td> <td>222</td> </tr> </tbody> </table> </body> </html>
- # pip install bs4
- from bs4 import BeautifulSoup
- import requests
-
- content = requests.get("http://www.example.com/").text
- soup=BeautifulSoup(content,"html.parser") #解析内容,指定解析器(解析成树状结构)
-
- print(soup.p)
-
-
-
-
- #举例 p标签内容
- all_prices=soup.find_all("p",attrs={"class":"price_color"}) #p标签,类:类名
- for price in all_prices:
- print(price.string[2:]) #会把标签包围的文章显示出来 [2:]大于等于2
-
-
- #举例 h3里面的a标签内容
- all_titles=soup.find_all("h3")
- for titel in all_titles:
- all_links=titel.find_all("a")
- for link in all_links:
- print(link.string)
- #pip install requests
- import requests
- # pip install bs4
- from bs4 import BeautifulSoup
-
-
- #把爬虫程序伪装成正常的浏览器
- #任意网页——>鼠标右键——>检查——>Network——>User-Agent——>复制过来
- headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}
-
- for strat_num in range(0,250,25): #每页有25个电影
- #print(strat_num)
- response = requests.get(f"https://movie.douban.com/top250?start={strat_num}", headers=headers) # 地址
- html = response.text
- soup = BeautifulSoup(html, "html.parser") # 获取网页结构内容
- all_titles = soup.findAll("span", attrs={"class": "title"}) # span标签 的里面类class=title
- for title in all_titles:
- # print(title.string)
- title_string = title.string
- if "/" not in title_string: # 不带斜杠的中文名字
- print(title.string)
- G:\python\class1\venv\Scripts\python.exe G:\python\class1\demo1.py
- 肖申克的救赎
- 霸王别姬
- 阿甘正传
- 泰坦尼克号
- 这个杀手不太冷
- 千与千寻
- 美丽人生
- 星际穿越
- 辛德勒的名单
- 盗梦空间
- 楚门的世界
- 忠犬八公的故事
- 海上钢琴师
- 三傻大闹宝莱坞
- 放牛班的春天
- 机器人总动员
- 疯狂动物城
- 无间道
- 控方证人
- 大话西游之大圣娶亲
- 熔炉
- 教父
- 触不可及
- 当幸福来敲门
- 末代皇帝
- 寻梦环游记
- 龙猫
- 怦然心动
- 活着
- 蝙蝠侠:黑暗骑士
- 哈利·波特与魔法石
- 指环王3:王者无敌
- 我不是药神
- 乱世佳人
- 飞屋环游记
- 素媛
- 哈尔的移动城堡
- 十二怒汉
- 何以为家
- 摔跤吧!爸爸
- 让子弹飞
- 猫鼠游戏
- 天空之城
- 鬼子来了
- 少年派的奇幻漂流
- 海蒂和爷爷
- 钢琴家
- 大话西游之月光宝盒
- 指环王2:双塔奇兵
- 闻香识女人
若报错查看:Selenium安装WebDriver最新Chrome驱动(含116/117/118/119)
安装环境:在SeleniumLearn.ipynb里面运行 !pip install selenium chromedriver 这里需要查看对应的版本进行下载 地址1:http://npm.taobao.org/mirrors/chromedriver/ 地址2:https://googlechromelabs.github.io/chrome-for-testing/ 放置地方 地方1(举例自己电脑) :“C:\1.数据获取Selenium环境”路径里面 地方2(需要配置环境变量):“C:\Users\16615\AppData\Local\Google\Chrome\Application”路径里面 测试 from selenium import webdriver driver = webdriver.Chrome() 例子 url = "https://www.xinpianchang.com/discover/article-0-0-all-all-0-0-hot" driver.get(url) driver.close()