Python 入门到入狱3(构建流程)

准备需要的工具包

  • 一、下载需要的常用包
  • 二、常用工具包的使用
  • 三、构建流程(第5步有全部源码)

Python 入门到入狱3(构建流程)_第1张图片

一、下载需要的常用包

1.1点击File加入Settings
Python 入门到入狱3(构建流程)_第2张图片
1.2选择提交需要的工具包
-------!常用的系统模块

 1. sys					
 2. bs4\BeautifulSoup   		//网页解析~获取数据
 3. re							//正则表达式~进行文字匹配
 4. urllib						//制定URL~获取网页数据
 5. xlwt						//进行保存Excel操作
 6. sqlite3						//进行SQLite数据库操作

Python 入门到入狱3(构建流程)_第3张图片
1.3搜索需要的工具名称点击Install添加
Python 入门到入狱3(构建流程)_第4张图片

二、常用工具包的使用

2.1、Bs4函数

from bs4 import BeautifulSoup

file = open("./baidu.html","rb")
html = file.read().decode("utf-8")
bs = BeautifulSoup(html,"html.parser")

# print(bs)

#拿到标签文字内容
# print(bs.a)        #查询a标签
# print(bs.a.string) #a标签的内容

#拿到标签属性
# print(bs.a.attrs)   #a标签内的属性与值


#---------------------------------------------------------------------------------------

#1.文档遍历
# i = 1
# while i < len(bs.head.contents):
#     print(bs.head.contents[i])
#     i+=1
#     if i>len(bs.head):
#         break

#1.1文档搜索
#字符串过滤方式 : 会查找与字符串匹配的内容
# t_list = bs.find_all("a")


#正则表达式搜索 : 使用search()方法来匹配内容(包含)
# t_list = bs.find_all(re.compile("a"))

#方法搜索 : 根据函数来进行搜索内容
# def  name_is_exists(tag):
#     return tag.has_attr("name")
#
# t_list = bs.find_all(name_is_exists)
# for item in t_list:
#     print(item)


#------------------------------------------------------------------------------

#2.kwargs   参数
# t_list = bs.find_all(id="head")
# for item in t_list:
#     print(item)

#3.text参数
# t_list = bs.find_all(text = "hao123")
# t_list = bs.find_all(text = [ "hao123","地图","贴吧"])
# t_list = bs.find_all(text = re.compile("\d"))  #应用正则表达式来寻找特定文本内容(标签里的字符串)

#4.limit参数
# t_list = bs.find_all("a",limit=3)
# for item in t_list:
#     print(item)

#5.css选择器
# t_list = bs.select(".toindex")
# t_list = bs.select("#u1")
# t_list = bs.select("a[class='toindex']") #查找标签里的属性
# t_list = bs.select("head > title")       #从父标签查询子标签
# for item in t_list:
#     print(item)
# t_list = bs.select(".pf ~ .lb")            #兄弟标签内查找
# print(t_list[0].get_text())

2.2、Re函数

import re
#使用模板对象进行比对
# base = re.compile("AA")  #用于验证其他字符串是否相同
# m = base.search("ABCAA") #search()字符串内容校验函数

#去除模板对象进行比对
# m = re.search("asb","AAasb")
# print(m)

#在指定范围内查询指定内容
print(re.findall("[A-Z|a-z]+\d","ABffdBDH321"))

#sub()替换函数
# m = re.sub("A","你好","A,很高兴认识你")
# print(m)

2.3、Urllib函数
Urllib源码操作快捷键
2.4、Xlwt函数

import xlwt

workbook = xlwt.Workbook(encoding="utf-8")  #创建Workbook对象
worksheet = workbook.add_sheet("sheet1")    #创建工作表
#打印99乘法表
for i in range(0,9):
    for j in range(0,i+1):
        worksheet.write(i,j,"%d x %d = %d"%(i+1,j+1,(i+1)*(j+1)))  # 写入数据 第一行参数,第二列参数,第三内容参数
workbook.save('student.xls')                #保存数据

三、构建流程(第5步有全部源码)

1. 爬取网页(模拟成网页请求爬取指定网页)

#获取影片的链接
finlink = re.compile(r'')    #指定读取详情规则
#获取影片图片
finimg = re.compile(r',re.S) #re包中S函数去除换行避免获取不全数据
#获取影片片名
fintitle = re.compile(r'(.*)')
#获取影片评分
finrating = re.compile(r'(.*)')
#获取影片评价
finpj = re.compile(r'(\d*)人评价')
#找到概况
fininq = re.compile(r'(.*)')
#获取影片的相关内容
finBd = re.compile(r'

(.*?)

'
,re.S) #爬取网页 def getData(baseUrl): datalist = [] for i in range(0,1): #1.调用获取页面信息的函数·十次 url = baseUrl + str(i*25) #2.每进入一遍读取25次数据 # 2.获取数据 html = askURL(url) #3.保存获取到的网页源码 soup = BeautifulSoup(html,"html.parser") #1.获取到html类型的数据 # 3.逐一解析数据 for item in soup.find_all("div",class_="item"): #2.循环遍历符合指定字符串,形成列表 # print(item) #3.测试:获取到指定内容的所有信息 return datalist

2. 获取数据(使用工具包中的BeautifulSoup获取指定内容数据)

 #得到指定一个URL网页内容
def askURL(url):
    head = {
                                                  #1.模拟一个游览器头部信息
        "User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
    }
    request = urllib.request.Request(url,headers=head)   #2.封装请求头传递参数
    html = ""
    try:
        response = urllib.request.urlopen(request)       #3.请求参数响应到需要爬取的网页中
        html = response.read().decode("utf-8")           #4.进行编码格式防止乱码
        # print(html)
    except urllib.error.URLError as e:                   #5.异常处理以及捕捉异常
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)

    return html                                          #6.返回一个html网页数据

3. 解析内容(快速查找到需要的数据)

#爬取网页
def getData(baseUrl):
    datalist = []

    for i in range(0,1):             #1.调用获取页面信息的函数·十次
        url = baseUrl + str(i*25)    #2.每进入一遍读取25次数据
        # 2.获取数据
        html = askURL(url)           #3.保存获取到的网页源码
        soup = BeautifulSoup(html,"html.parser")            #1.获取到html类型的数据
        # 3.逐一解析数据
        for item in soup.find_all("div",class_="item"):     #2.循环遍历符合指定字符串,形成列表
            # print(item)                                   #3.测试:获取到指定内容的所有信息
            data = []                                       #4.保存一组指定的数据
            item = str(item)                                #5.把遍历出来的item数据转为字符串
            alink = re.findall(finlink,item)[0]             #6.使用re正则查找符合指定字符串
            data.append(alink)                              #7.保存到data
            imglink = re.findall(finimg,item)[0]
            data.append(imglink)                           #添加图片
            titlelink = re.findall(fintitle,item)
            if (len(titlelink) == 2):                        #查询出来有两条相同数据需要不同添加
                ctitle = titlelink[0]
                data.append(ctitle)                        #添加名称
                otitle = titlelink[1].replace("/","")      #replace替换函数("条件","替换")
                data.append(otitle)
            else:
                data.append(titlelink[0])
                data.append(' ')                           #给相同列流于位置

            ratinglink = re.findall(finrating,item)[0]
            data.append(ratinglink)                        #添加评分

            judgelink = re.findall(finpj,item)[0]
            data.append(judgelink)                         #添加评价

            inqlink = re.findall(fininq,item)
            if (len(inqlink) != 0):
                inq = inqlink[0].replace("。","")
                data.append(inq)                           # 添加概况
            else:
                data.append(" ")                           #保留位置为空

            bd = re.findall(finBd,item)[0]                 #添加内容
            bd = re.sub('(\s+)?'," ",bd)        #替换指定内容
            bd = re.sub('/ '," ",bd)
            data.append(bd.strip())                        #strip()去左右空格

            # 把解析好的数据添加到datalist中
            datalist.append(data)
            print(datalist)
    return datalist

4. 保存数据

#保存数据
def saveData(datalist,savepath):
   print("save.............................")
   book = xlwt.Workbook(encoding="utf-8",style_compression=0)    # 创建Workbook对象
   sheet = book.add_sheet("豆瓣电影T250",cell_overwrite_ok=True)   # 创建工作表
   col = ("电影详情链接","电影图片链接","影片中文名","影片外国名","电影评分","评价","概况","相关内容")
   for i in range(0,7):
       sheet.write(0,i,col[i])                                   #列名
   for i in range(0,250):
       print("第%d条"%(i+1))
       data = datalist[i]
       for j in range(0,8):
           sheet.write(i+1,j,data[j])                           #循环遍历数据

   book.save(savepath)                                          # 保存数据

5.构建流程源码(内容有点复杂不懂的@入狱的博主)

# -*- codeing = utf-8 -*-
# @Time  14:40
# @Author: Hjj
# @File: Demo1.py
# @Software: PyCharm

from bs4 import BeautifulSoup       #1.网页解析~获取数据
import re                           #2.正则表达式~进行文字匹配
import urllib.request,urllib.error  #3.制定URL~获取网页数据
import xlwt                         #4.进行保存Excel操作
import sqlite3                      #5.进行SQLite数据库操作

def main():
    baseUrl = "https://movie.douban.com/top250?start="
    #1.爬取网页
    datalist = getData(baseUrl)
    #4.保存数据
    savepath = "豆瓣电影Top250.xls"
    saveData(datalist,savepath)

#获取影片的链接
finlink = re.compile(r'')    #指定读取详情规则
#获取影片图片
finimg = re.compile(r',re.S) #re包中S函数去除换行避免获取不全数据
#获取影片片名
fintitle = re.compile(r'(.*)')
#获取影片评分
finrating = re.compile(r'(.*)')
#获取影片评价
finpj = re.compile(r'(\d*)人评价')
#找到概况
fininq = re.compile(r'(.*)')
#获取影片的相关内容
finBd = re.compile(r'

(.*?)

'
,re.S) #爬取网页 def getData(baseUrl): datalist = [] for i in range(0,10): #1.调用获取页面信息的函数·十次 url = baseUrl + str(i*25) #2.每进入一遍读取25次数据 # 2.获取数据 html = askURL(url) #3.保存获取到的网页源码 soup = BeautifulSoup(html,"html.parser") #1.获取到html类型的数据 # 3.逐一解析数据 for item in soup.find_all("div",class_="item"): #2.循环遍历符合指定字符串,形成列表 # print(item) #3.测试:获取到指定内容的所有信息 data = [] #4.保存一组指定的数据 item = str(item) #5.把遍历出来的item数据转为字符串 alink = re.findall(finlink,item)[0] #6.使用re正则查找符合指定字符串 data.append(alink) #7.保存到data imglink = re.findall(finimg,item)[0] data.append(imglink) #添加图片 titlelink = re.findall(fintitle,item) if (len(titlelink) == 2): #查询出来有两条相同数据需要不同添加 ctitle = titlelink[0] data.append(ctitle) #添加名称 otitle = titlelink[1].replace("/","") #replace替换函数("条件","替换") data.append(otitle) else: data.append(titlelink[0]) data.append(' ') #给相同列流于位置 ratinglink = re.findall(finrating,item)[0] data.append(ratinglink) #添加评分 judgelink = re.findall(finpj,item)[0] data.append(judgelink) #添加评价 inqlink = re.findall(fininq,item) if (len(inqlink) != 0): inq = inqlink[0].replace("。","") data.append(inq) # 添加概况 else: data.append(" ") #保留位置为空 bd = re.findall(finBd,item)[0] #添加内容 bd = re.sub('(\s+)?'," ",bd) #替换指定内容 bd = re.sub('/ '," ",bd) data.append(bd.strip()) #strip()去左右空格 # 把解析好的数据添加到datalist中 datalist.append(data) # print(datalist) return datalist #得到指定一个URL网页内容 def askURL(url): head = { #1.模拟一个游览器头部信息 "User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" } request = urllib.request.Request(url,headers=head) #2.封装请求头传递参数 html = "" try: response = urllib.request.urlopen(request) #3.请求参数响应到需要爬取的网页中 html = response.read().decode("utf-8") #4.进行编码格式防止乱码 # print(html) except urllib.error.URLError as e: #5.异常处理以及捕捉异常 if hasattr(e,"code"): print(e.code) if hasattr(e,"reason"): print(e.reason) return html #6.返回一个html网页数据 #保存数据 def saveData(datalist,savepath): print("save.............................") book = xlwt.Workbook(encoding="utf-8",style_compression=0) # 创建Workbook对象 sheet = book.add_sheet("豆瓣电影T250",cell_overwrite_ok=True) # 创建工作表 col = ("电影详情链接","电影图片链接","影片中文名","影片外国名","电影评分","评价","概况","相关内容") for i in range(0,7): sheet.write(0,i,col[i]) #列名 for i in range(0,250): print("第%d条"%(i+1)) data = datalist[i] for j in range(0,8): sheet.write(i+1,j,data[j]) #循环遍历数据 book.save(savepath) # 保存数据 #执行指定函数 if __name__ == "__main__": main() print("保存完毕.....................................")

6.运行结果
6.1 创建Excel.xls表格保存数据

Python 入门到入狱3(构建流程)_第5张图片
6.2 保存结果以及对应列比对

Python 入门到入狱3(构建流程)_第6张图片

你可能感兴趣的:(Python,python,java,正则表达式,html,动态规划)