• Python爬虫零基础入门教程


    文章目录:

    一:概论 

    二:Python基础

    三:爬虫须知

    1.流程

    1.1 PyCharm方法 

    1.2 Anacoda Prompt方法

    2.遵守规则

    第一种:PyCharm方法 

    1.HTTP请求和响应

    1.1 相关定义 

    1.2 完整的HTTP请求

    1.3 完整的HTTP响应

    1.4 Requests库

    2.HTML

    2.1 HTML网页结构

    2.2 常用标签

    2.3 BeautifulSoup库

    3.实战 从豆瓣获取电影Top250

    3.1 完整代码 

    3.2 运行结果

    第二种:Anacoda Prompt方法

    1.数据获取


    参考:Python+爬虫python数据分析教程200集(30小时)

    一:概论 

    1. 概括:批量化、自动化、既有数据
    2. 分类
    3. 聚焦爬虫:完成某一项特点数据的采集
    4. 通用爬虫:声明内容都采集,都存下来
    5. 增量爬虫:既可以是聚焦爬虫 也可以是通用爬虫
    6. 当内容发生变化的时候,它可以增量的获取内容
    7. 暗网爬虫:既可以是聚焦爬虫 也可以是通用爬虫 还可以是增量爬虫
    8. 深网爬虫
    9. 了解爬虫的实现原理
    10. 直接使用代码去控制终端:App 浏览器
    11. 使用代码自己去发送请求
    12. C/B模型
    13. 使用代码去控制CB,请求指定的数据
    14. 分析CB是如何发送的请求,使用代码自己去实现请求的发送

    二:Python基础

    Python快速入门教程

    三:爬虫须知

    1.流程

    1.1 PyCharm方法 

    1. 第一步:获取网页内容(Requests库发送HTTP请求)
    2. 第二步:解析网页内容(BeautifulSoup库获取HTML网页结构内容信息)
    3. 第三步:储存(数据库) 或 得到更多信息(数据分析)

    1.2 Anacoda Prompt方法

    1. 语言基础:Python语言基础
    2. 数据获取:爬虫全套视频
    3. 数据存储:MySQL
    4. 数据处理:NumPy、Pandas
    5. 数据可视化:Matplotlib、PyEcharts

     语言环境工具(Anaconda Prompt):Anaconda | The World’s Most Popular Data Science Platform

    1. 先注册账号
    2. Anaconda Prompt输入(系统会自动打开一个网页):jupyter notebook
    3. 切换路径:cd..
    4. 快捷键
    5. 查看所有快捷键:h
    6. 编辑状态切换——>未编辑状态:esc
    7. 未编辑状态——>编辑状态:enter
    8. 代码格式——>笔记模式:m
    9. 笔记模式——>代码格式:y
    10. 执行代码
    11. 创建空白行:alt + enter
    12. 向下选择:shift + enter
    13. 常用:ctrl + enter

    2.遵守规则

    1. 1.不要爬取公民隐私数据
    2. 2.不要爬取受著作权保护的内容
    3. 3.不要爬取国家事务国防建设和尖端技术领域
    1. 4.请求数量和频率不能过高:否则可能无异于DDos攻击
    2. 5.有反扒限制就不要去爬取了:需要登录、验证码
    3. 6.查看网站的robots.txt文件:了解可爬取的网页路径范围

    第一种:PyCharm方法 

    1.HTTP请求和响应

    1.1 相关定义 

    1. HTTP:超文本传输协议
    2. 客户端和服务器之间的请求响应协议
    3. 请求方法
    4. Get:获得数据
    5. Post:创建数据
    6. 接收的响应数据类型
    7. HTML:text/html
    8. JSON:application/json
    9. HTML和JSON:text/html,application/json
    10. 任意类型:/*/
    11. 常见的状态码和状态消息
    12. 200 ok 客户端请求成功
    13. 300 Moved Permanently 重定向资源被永久移动到新地址
    14. 400 Bad Request 客户端不能被服务器所理解
    15. 401 Unauthorized 请求未经授权
    16. 403 Forbidden 服务器拒绝提供服务
    17. 404 Not Found 请求资源不存在
    18. 500 Internal Server Error 服务器发生不可预期的错误
    19. 503 Server Unavailable 服务器当前不能处理客户端的请求

    1.2 完整的HTTP请求

    1. POST请求
    2. #请求行 协议版本
    3. POST/user/info?new_user=true HTTP/1.1
    4. #请求头 域名 资源路径 查询参数
    5. Host:www.douban.com/movie/top250?start=75&filter=unwatched
    6. User-Agent:curl/7.77.0
    7. Accept:*/*
    8. #请求体
    9. {
    10. "username":"刘鑫磊",
    11. "email":"123@qq.com"
    12. }
    13. GET请求
    14. #请求行
    15. GET/user/info?new_user=true HTTP/1.1
    16. #请求头
    17. Host:www.example.com
    18. User-Agent:curl/7.77.0
    19. Accept:*/*

    1.3 完整的HTTP响应

    1. #状态行:协议版本 状态码 状态消息
    2. HTTP/1.1 200 OK
    3. #响应头
    4. Date:Fri,27 Jan 2023 02:10:48 GMT
    5. Content-Type:text/html;charset=utf-8
    6. #响应体
    7. <!DOCTYPE html>
    8. <head><title>首页</title></head>
    9. <body><h1>刘鑫磊</h1><p>非常棒</p></body>
    10. </html>

    1.4 Requests库

    1. #在终端输入(视图——>工具窗口——>终端):pip install requests
    2. import requests
    3. #把爬虫程序伪装成正常的浏览器
    4. #任意网页——>鼠标右键——>检查——>Network——>User-Agent——>复制过来
    5. 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"}
    6. response=requests.get("https://movie.douban.com/top250",headers=headers)
    7. print(response)
    8. print(response.status_code)
    9. if response.ok:
    10. # 获取响应体内容
    11. print(response.text)
    12. else:
    13. print("请求失败")

    2.HTML

    2.1 HTML网页结构

    1. <!DOCTYPE HTML>
    2. <html>
    3. <body>
    4. <h1>我是标题</h1>
    5. <p>我是一段文字</p>
    6. </body>
    7. </html>

    2.2 常用标签

    1. 标题:<h1></h1>
    2. 文本段落:<p></p>
    3. 换行:<br>
    4. 图片:<img src="图片链接">
    5. 链接:<a href="链接地址" target="_self"></a> target="_blank"
    6. 容器:<span></span> 内联元素不会独占一块,一行可写多个
    7. 盒子:<div></div> 块级
    8. 有序列表:<ol><li></li></ol>
    9. 无序列表:<ul><li></li></ul>
    10. 表格
    11. <table>
    12. <thead> #头部
    13. <tr> #行
    14. <td></td> #列
    15. </tr>
    16. <thead>
    17. <tbody> #主体
    18. <tr> # 行
    19. <td></td> # 列
    20. </tr>
    21. </tbody>
    22. </table>
    23. class属性:定义元素的类名称,帮助我们分组
    24. class="content" class="review"

    例子:“1.html”文件 

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title>我是标题</title>
    5. </head>
    6. <body>
    7. <h1>我是一级标题</h1>
    8. <h2>我是二级标题</h2>
    9. <h6>我是六级标题</h6>
    10. <p>我是文本段落</p>
    11. <br>
    12. <b>加粗字体</b>
    13. <i>斜体</i>
    14. <u>下划线</u>
    15. <img src="图片链接">
    16. <a href="https://www.baidu.com" target="_self">百度链接</a>
    17. <div style="background-color:red"></div>
    18. <span></span>
    19. <ol>
    20. <li>我是第一项</li>
    21. <li>我是第二项</li>
    22. </ol>
    23. <ul>
    24. <li>我是第一项</li>
    25. <li>我是第二项</li>
    26. </ul>
    27. <table border="1">
    28. <thead>
    29. <tr>
    30. <td>头部1</td>
    31. <td>头部2</td>
    32. </tr>
    33. <thead>
    34. <tbody>
    35. <tr>
    36. <td>111</td>
    37. <td>222</td>
    38. </tr>
    39. </tbody>
    40. </table>
    41. </body>
    42. </html>

    2.3 BeautifulSoup库

    1. # pip install bs4
    2. from bs4 import BeautifulSoup
    3. import requests
    4. content = requests.get("http://www.example.com/").text
    5. soup=BeautifulSoup(content,"html.parser") #解析内容,指定解析器(解析成树状结构)
    6. print(soup.p)
    7. #举例 p标签内容
    8. all_prices=soup.find_all("p",attrs={"class":"price_color"}) #p标签,类:类名
    9. for price in all_prices:
    10. print(price.string[2:]) #会把标签包围的文章显示出来 [2:]大于等于2
    11. #举例 h3里面的a标签内容
    12. all_titles=soup.find_all("h3")
    13. for titel in all_titles:
    14. all_links=titel.find_all("a")
    15. for link in all_links:
    16. print(link.string)

    3.实战 从豆瓣获取电影Top250

    3.1 完整代码 

    1. #pip install requests
    2. import requests
    3. # pip install bs4
    4. from bs4 import BeautifulSoup
    5. #把爬虫程序伪装成正常的浏览器
    6. #任意网页——>鼠标右键——>检查——>Network——>User-Agent——>复制过来
    7. 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"}
    8. for strat_num in range(0,250,25): #每页有25个电影
    9. #print(strat_num)
    10. response = requests.get(f"https://movie.douban.com/top250?start={strat_num}", headers=headers) # 地址
    11. html = response.text
    12. soup = BeautifulSoup(html, "html.parser") # 获取网页结构内容
    13. all_titles = soup.findAll("span", attrs={"class": "title"}) # span标签 的里面类class=title
    14. for title in all_titles:
    15. # print(title.string)
    16. title_string = title.string
    17. if "/" not in title_string: # 不带斜杠的中文名字
    18. print(title.string)

    3.2 运行结果

    1. G:\python\class1\venv\Scripts\python.exe G:\python\class1\demo1.py
    2. 肖申克的救赎
    3. 霸王别姬
    4. 阿甘正传
    5. 泰坦尼克号
    6. 这个杀手不太冷
    7. 千与千寻
    8. 美丽人生
    9. 星际穿越
    10. 辛德勒的名单
    11. 盗梦空间
    12. 楚门的世界
    13. 忠犬八公的故事
    14. 海上钢琴师
    15. 三傻大闹宝莱坞
    16. 放牛班的春天
    17. 机器人总动员
    18. 疯狂动物城
    19. 无间道
    20. 控方证人
    21. 大话西游之大圣娶亲
    22. 熔炉
    23. 教父
    24. 触不可及
    25. 当幸福来敲门
    26. 末代皇帝
    27. 寻梦环游记
    28. 龙猫
    29. 怦然心动
    30. 活着
    31. 蝙蝠侠:黑暗骑士
    32. 哈利·波特与魔法石
    33. 指环王3:王者无敌
    34. 我不是药神
    35. 乱世佳人
    36. 飞屋环游记
    37. 素媛
    38. 哈尔的移动城堡
    39. 十二怒汉
    40. 何以为家
    41. 摔跤吧!爸爸
    42. 让子弹飞
    43. 猫鼠游戏
    44. 天空之城
    45. 鬼子来了
    46. 少年派的奇幻漂流
    47. 海蒂和爷爷
    48. 钢琴家
    49. 大话西游之月光宝盒
    50. 指环王2:双塔奇兵
    51. 闻香识女人

    第二种:Anacoda Prompt方法

    1.数据获取Selenium环境

    若报错查看:Selenium安装WebDriver最新Chrome驱动(含116/117/118/119) 

    1. 安装环境:在SeleniumLearn.ipynb里面运行
    2. !pip install selenium
    3. chromedriver
    4. 这里需要查看对应的版本进行下载
    5. 地址1:http://npm.taobao.org/mirrors/chromedriver/
    6. 地址2:https://googlechromelabs.github.io/chrome-for-testing/
    7. 放置地方
    8. 地方1(举例自己电脑) :“C:\1.数据获取Selenium环境”路径里面
    9. 地方2(需要配置环境变量):“C:\Users\16615\AppData\Local\Google\Chrome\Application”路径里面
    10. 测试
    11. from selenium import webdriver
    12. driver = webdriver.Chrome()
    13. 例子
    14. url = "https://www.xinpianchang.com/discover/article-0-0-all-all-0-0-hot"
    15. driver.get(url)
    16. driver.close()

  • 相关阅读:
    Kotlin 中注解 @JvmOverloads 的作用
    CSDN每日一题学习训练——Python版(N皇后 II、买卖股票的最佳时机 II、编程通过键盘输入每一位运动员)
    Vue3 + ElementUIPlus获取node的parent节点
    .bat批处理命令处理文件
    互斥锁、条件变量、信号量以及适用场景
    小程序开发流程
    【Linux】一个小故事让你秒懂shell外壳程序
    2022年双十一好物分享,数码好物选购指南
    对象的关联
    【云原生】第二篇--容器管理工具 Docker生态架构及部署
  • 原文地址:https://blog.csdn.net/liu17234050/article/details/133877327