day21-python-spider
day21-python-spider
spider
实战
- 爬虫类
from fake_useragent import UserAgent
import urllib
from ua_info import ua_list
import random
import re
from bs4 import BeautifulSoup
import xlwt
# 创建一个爬虫类
class MySpider01(object):
# 初始化操作,定义初始化的网页
def __init__(self):
self.url = "https://app.movie/index.php/vod/type/id/4/page/{}.html"
# 请求函数
def getUrlInfo(self, url):
# 网页信息
html = ""
# 随机获取一个请求头
ua = UserAgent()
headers = {
"user-agent": ua.firefox
}
# 创建请求对象
req = urllib.request.Request(headers=headers, url=url)
try:
# 获取请求的响应对象
resp = urllib.request.urlopen(req)
# 获取网页信息
html = resp.read().decode("utf-8")
except Exception as e:
print(e)
return html
# 解析函数
def parseHtml(self, html):
# 用来保存结果数据
dataList = []
# 创建正则对象
findMovie = re.compile(
'<a class="stui-vodlist__thumb lazyload" data-original="(.*?)" href="(.*?)" title="(.*?)">', re.S)
# 通过BeautifulSoup对网页进行解析,形成一个树形的结构
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all("li", class_="stui-vodlist__item"):
# 保存每个电影的信息
data = []
# 转化为字符串
item = str(item)
# 获取电影的信息
movieInfo = re.findall(findMovie, item)
# 获取电影图片的链接
movieImgLink = movieInfo[0][0]
data.append(movieImgLink)
# 获取电影的链接
movieLink = "https://app.movie" + movieInfo[0][1]
data.append(movieLink)
# 获取电影的名字
movieName = movieInfo[0][2]
data.append(movieName)
dataList.append(data)
return dataList
# 保存数据
def saveData(self, dataList):
# 创建一个excel表
book = xlwt.Workbook(encoding="utf-8", style_compression=0)
# 创建一个sheet
sheet = book.add_sheet("电影", cell_overwrite_ok=True)
# 插入数据
sheet.write(0, 0, "电影图片链接")
sheet.write(0, 1, "电影详情链接")
sheet.write(0, 2, "电影名称")
for i in range(0, len(dataList)):
data = dataList[i]
for j in range(0, 3):
sheet.write(i + 1, j, data[j])
print(f"第{i}条数据")
# 保存文件
book.save("电影.xls")
# 主函数
def run(self):
url = self.url.format(1)
print(url)
html = self.getUrlInfo(url)
dataList = self.parseHtml(html)
self.saveData(dataList)
mySpider01 = MySpider01()
mySpider01.run()
- 数据库类
# 数据库的操作
import pymysql
class MyDatabaseOpt(object):
# 初始化链接数据库
def __init__(self):
self.username="root" # 用户名
self.password="root" # 密码
self.host="localhost" # 数据库地址
self.database="db_movie" # 数据库名字
# 获取一个链接,一个游标cursor对象
def getConnect(self):
connect=pymysql.connect(host=self.host,user=self.username,password=self.password,database=self.database)
cursor=connect.cursor()
return cursor
# 关闭链接
def close(self,connect):
# 空值的处理
if connect:
connect.close()
# 数据库的增删改查操作

浙公网安备 33010602011771号