网站首页 > 知识剖析 正文
网络爬虫指按照一定的规则(模拟人工登录网页的方式),自动抓取网络上的程序。简单的说,就是讲你上网所看到页面上的内容获取下来,并进行存储。网络爬虫的爬行策略分为深度优先和广度优先。如下图是深度优先的一种遍历方式是A到B到D 到E 到C到 F(ABDECF)而宽度优先的遍历方式ABCDEF 。
一、环境准备
1.1 requests和beautifulsoup4库的安装
pip install requests
pip install beautifulsoup4
1.2 requests的使用
requests库的函数
1.2.1 requests.get()函数
get()是获取网页最常用的方式,在调用requests.get(url)函数后,返回的网页内容会保存为一个Response 对象,其中,get()函数的参数url 必须链接采用HTTP 或HTTPS方式访问
import requests as rt
my_url="http://www.baidu.com"
my_data=rt.get(my_url)
print(type(my_data))
1.3 beautifulsoup4
(1)使用方法soup.<tab>方法.
(2)find_all()方法
(3)Select()方法
1.4爬取豆瓣top250
<li>
<div class="item">
<div class="pic">
<em class="">1</em>
<a href="https://movie.douban.com/subject/1292052/">
<img alt="肖申克的救赎" class="" src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg" width="100"/>
</a>
</div>
<div class="info">
<div class="hd">
<a class="" href="https://movie.douban.com/subject/1292052/">
<span class="title">肖申克的救赎</span>
<span class="title"> / The Shawshank Redemption</span>
<span class="other"> / 月黑高飞(港) / 刺激1995(台)</span>
</a>
<span class="playable">[可播放]</span>
</div>
<div class="bd">
<p class="">
导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...<br/>
1994 / 美国 / 犯罪 剧情
</p>
<div class="star">
<span class="rating5-t"></span>
<span class="rating_num" property="v:average">9.7</span>
<span content="10.0" property="v:best"></span>
<span>1674127人评价</span>
</div>
<p class="quote">
<span class="inq">希望让人自由。</span>
</p>
</div>
</div>
</div>
</li>
<li>
方法一:利用find_all
(1)详细代码,爬取前25个排名电影
import requests as rt
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
my_url=r"https://movie.douban.com/top250?start=0&filter="
my_data = rt.get(my_url, headers=headers, timeout=30)
my_data.encoding="utf-8" #解决中文乱码问题
from bs4 import BeautifulSoup as bs
soup=bs(my_data.text,"html.parser")
x1=soup.find_all("li")
for i in x1:
if i.find('em')!= None:
print(i.find('em').text,end=" ")
print(i.find('span', class_='title').text,end=" ")
print(i.find('span', class_='rating_num').text, end=" ")
print(i.find('span', class_='inq').text, end=" ")
print()
(2)详细代码,爬取前250个排名电影(添加循环访问)
import requests as rt
from bs4 import BeautifulSoup as bs
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
x2=range(0,250,25)
for my_n in x2:
my_url=r"https://movie.douban.com/top250?start="+str(my_n)+r"&filter="
my_data = rt.get(my_url, headers=headers, timeout=30)
my_data.encoding="utf-8" #解决中文乱码问题
soup=bs(my_data.text,"html.parser")
x1=soup.find_all("li")
for i in x1:
if i.find('em')!= None:
try:
print(i.find('em').text,end=" ")
print(i.find('span', class_='title').text,end=" ")
print(i.find('span', class_='rating_num').text, end=" ")
print(i.find('span', class_='inq').text, end=" ")
except:
pass
print()
你学会了吗?明天介绍其他的方法。
猜你喜欢
- 2024-11-15 JavaScript网页截屏方法,你get到了嘛?
- 2024-11-15 老师的职业生涯-作为教师,如何规划自己的职业生涯
- 2024-11-15 Vue 3 组件开发(一):搭建表格编辑系统 - 环境搭建
- 2024-11-15 Vue 3学习:2. 项目结构及变化点(vuecli2项目结构)
- 2024-11-15 Blob-对象介绍(blob类型数据)
- 2024-11-15 管理用户焦点的前端3大顶级库(前端如何设置管理系统权限)
- 2024-11-15 Java实现图形验证码程序(java图形验证码的生成)
- 2024-11-15 html基础必备-图像标记,前端小白一看就会
- 2024-11-15 使用原生js、css和html实现图片画廊组件
- 2024-11-15 Python爬虫,高清美图我全都要!爬取你想要的,嘿嘿嘿
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)