一、简单的爬虫三部曲:
- 获取想要爬取的内容的url;
- 向服务器发送请求;
- 保存所获取的响应内容。
二、首先要理解什么是url?
url:uniform resource locator,统一资源定位器,可以简单理解为网址;
三、向服务器发送请求的主要方式是通过requests库:
import requests
response=requests.get(url)
此时得到的是response这个对象,接下来想要获取response对象的内容有两个方式:
1、response.text:
这种方式需要猜测内容的编码方式,有可能猜错,导致内容乱码;主要应用于所访问的数据是文档;
2、reponse.content:
这种方式返回的数据类型为byte数据,之后可以对数据进行解码得到数据内容,
content=response.content.decode("utf8")
四、网络请求
1、网络请求状态主要应用到两种:GET(对服务器不会产生改变),POST(对服务器会产生改变);
2、请求头参数:
(1)、User-Agent:浏览器名称,主要用于反扒伪装;
(2)、Referer:表明该网页是由哪一个网址而来的;
(3)、Cookie:由同一个人在浏览器发送两次请求,证明你自己是你自己本人,主要应用于需要登陆才能查看的网页;
五、一个简单的爬虫项目:爬取豆瓣的影评
import requests
url="https://movie.douban.com/review/15279921/"#获取网页的url
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67",
#"Cookie":"ll=\"118309\"; bid=7_HSFy8r_GU; _pk_id.100001.4cf6=32455872ccd57f3e.1688566491.; __yadk_uid=CIlBgaf0Rvf03SQuFfSElG4WzhdT7eO8; _vwo_uuid_v2=D66E3DAF86592DEF6B63E495F4E92CF74|ed467c1e8c97f8322839e217128638b1; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1688735321%2C%22https%3A%2F%2Fwww.bing.com%2F%22%5D; _pk_ses.100001.4cf6=1; ap_v=0,6.0; __utma=30149280.497551246.1688566491.1688566491.1688735323.2; __utmb=30149280.0.10.1688735323; __utmc=30149280; __utmz=30149280.1688735323.2.2.utmcsr=bing|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __utma=223695111.527564973.1688566491.1688566491.1688735323.2; __utmb=223695111.0.10.1688735323; __utmc=223695111; __utmz=223695111.1688735323.2.2.utmcsr=bing|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __gads=ID=91fd521da1238a8b-22aa0a468de200dd:T=1688566496:RT=1688735338:S=ALNI_MZYaamJx2PD8bkE5XizAV2nyUA7MA; __gpi=UID=00000c96b76064dd:T=1688566496:RT=1688735338:S=ALNI_MajuMAYmV4smwbC99GFcRAyChC9sw"
"Referer":"https://movie.douban.com/review/best/"
}#主要用于反扒伪装
response=requests.get(url,headers=headers)#向服务器发送get请求
content=response.content.decode('utf8')#获取response对象内容,并且对内容进行解码
with open("豆瓣影评.html","w",encoding="utf8") as f:
f.write(content)