目录
什么是爬虫
一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。
爬虫爬取数据的基本方式
模拟人的行为抓取数据
具体来说就是我们手动操作浏览页面的过程可以利用爬虫的一段程序来进行自动操作---比如我们看到网上的一篇文章觉得很不错,我们就想拷贝下来,但是当我们要摘要的文章很多时,手动的复制粘贴或其他一些方式就显得太过于吃力,而通过爬虫我们可以将这些文章快速的全部爬取下来从而替代了人为的操作并且更加高效便捷(帮助理解爬虫是啥干啥的,当然实现原理不是模拟人的复制粘贴行为)
利用抓包工具获取请求得到数据
在浏览器中F12按下点击network,选择xhr刷新页面后会出现很多请求如下图
简单来说:请求就是一段url携带参数,发送到指定服务器后他会根据参数返回给你一些数据来展示到网页上。而爬虫可以捕获这些请求来获取返回的数据。
开发工具
推荐直接用pycharm(2021版本),选择社区版,然后无脑安装。
主要运用模块
requests:用于发送get或post请求并携带参数来获取返回的网页或数据。
BeautifulSoup:将一个html文档,转化为BeautifulSoup对象,然后通过对象的方法或者属性去查找指定的节点内容。
re:一个正则表达式模块。
etree:利用xpath方法对网页转换成的xml文件进行爬取。
实战
操作一:爬取top250电影名
采用F12查看名称所在html中的位置
分析html源码,下面是爬取的层级
源码以及解析
#导入request请求模块
import requests
#导入解析网页模块
from bs4 import BeautifulSoup
#设置变量来改变网址
n=25
#模拟用户操作,设置headers
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
}
#循环遍历top250
for a in range(10):
# top250网址
# 观察第一页和第二页网址的区别,发现参数变化导致内容发生改变
url = "https://movie.douban.com/top250?start="+str(n*a)+"&filter="
#获取response对象
response = requests.get(url,headers=headers)
#对象部分参数展示
#请求服务器的状态码
code = response.status_code
#网页内容二进制返回
content = response.content
#网页编码格式
encoding = response.encoding
#网页源代码
text = response.text
#为了结果方便展示,利用字符拼接
result = ""
#判断一下请求成功再执行下面的程序
if(code == 200):
#分装成BeautifulSoup对象,指定html解析器
page = BeautifulSoup(response.text, "html.parser")
#解析到li,此时li是个数组可以继续解析到标题
li = page.find("div",id="wrapper").find("div",class_="article").find("ol",class_="grid_view").find_all("li")
for i in range(len(li)):
#获取li中的第一个span
span = li[i].find("span",class_="title")
#获取span中的文本拼接到result
result = result + span.text+" "
print(result)
输出结果