本篇笔记主要记录学习哔站up主:IT私塾的课程《Python爬虫基础5天速成(2021全新合集)Python入门+数据可视化》所做的笔记。
课程主要任务:爬取豆瓣电影top250电影的基本信息,包括电影的名称、豆瓣评分、电影概况、电影链接等。
#加载所需要的包
from bs4 import BeautifulSoup
import re,sys,xlwt,urllib,sqlite3
import urllib.request
##如果运行的过程报ssl的错误,可以加入以下两行代码
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
1. 观察网址特点
豆瓣电影的网页url:https://movie.douban.com/top250,每页25步电影,一共10页展示完top250电影
2. 确定url地址,伪装自己不被阻拦,定义读取url的函数
首先使用chrome浏览器开发者模式,找到自己电脑的'User-Agent'(要爬取哪个网址,就打开哪个网址找到自己的User-Agent)
def main():
base='https://movie.douban.com/top250?start='
askURL(base)
#得到一个网页的具体信息,即:把网页储存为变量
def askURL(url):
head={'User-Agent':' Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
request=urllib.request.Request(url,headers=head)
html=""
reponse=urllib.request.urlopen(request)
html=reponse.read().decode('utf-8')
return html
main()
3. 逐一解析网页
2中定义了解析一个网页的函数,由于top25是是由10个网页组成,所以我们要写一个循环,逐个解析每个网页
def getdata(baseurl):
datalist=[]
for i in range(0,10):#生成每页网址的url
url=baseurl+str(i*25)
html=askURL(url)#调用askURL,抓取每个网页的信息
#解析网页
bs=BeautifulSoup(html,'html.parser')#调用函数,将网页解析为树状结。
print(bs)#图1是打印后的结果
笔记会持续更新