1、准备工作
python获取网页信息:
1、首先分析获取网页的链接,观察其规律性
https://movie.douban.com/top250?start=
https://movie.douban.com/top250?start=25
通过观察得出获取不同的页面时 链接为https://movie.douban.com/top250?start=加上数字;
2、对网页中搜索的内容使用开发工具来具体匹配到标签
通过使用F12打开开发工具得出,我们所需要的内容在div标签内,接下来将对div的内容进行解析
python库的功能十分强大,首先需要导入几个库:
分别为:
import urllib.request,urllib.error 指定url爬取网页数据
from bs4 import BeautifulSoup 网页解析,实现数据处理
import re 正则表达式进行文字的匹配从而实现数据的提炼
import xlwt 导入到excel中进行存储
2、具体实现
(1)首先定义出基本框架
1、爬取网页
2、进行数据的解析
3、保存数据
注:每一个模块定义一个函数;最后再main()函数中进行调用
def main(): #每个部分都是一部分函数,需要每次进行调用
#1、爬取网页
baseurl = "https://movie.douban.com/top250?start="
datalist = getData(baseurl) #获取到网址的所有数据
savepath ="豆瓣电影Top250.xls"
#2、逐一解析数据
#3、保存数据
saveData(savepath) #直接保存到这个文件里面
#爬取网页
def getData(baseurl):
#边爬取边进行数据的解析
#得到指定一个URL的网页内容
def askURL(url):
#保存数据
def saveData(savepath):
print("save.....")
if __name__ == "__main__":
#调用函数
main() #从主方法调用到上面由自己编写 从入口调用到main函数中进行编写
(2)具体内容填取
1、通过for循环进行url后面数字的提取结合baseurl即可得出每一个页面
2、在得到网页信息时候,head需要从浏览器开发工具内进行获取,其作用是让服务器知道自己是一个什么样的浏览器及其电脑型号,以及自己需要获取什么样的内容
3、urllib.request.Request的作用是将url和封装的head信息进行传入,然后进行访问
在获取到html的时候可能会出现问题,因此需要进行try except异常处理
urllib.request.urlopen 来模仿浏览器发出一个请求
response.read().decode(“utf-8”)读取的信息以utf-8的形式存储到html中
#爬取网页
def getData(baseurl):
datalist = [] #将获取的网页中的数据存储到列表中
for i in range(0,10): #调用获取页面信息的函数10次
url = baseurl + str(i*25)
html = askURL(url) #保存获取到的网页源码
# 逐一解析数据
return datalist
#得到指定一个网页信息的URL内容(单独一个)
def askURL(url):
head = {
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"