爬虫流程:准备工作➡️爬取网页,获取数据(核心)➡️解析内容➡️保存数据
解析页面内容:使用beautifulsoup定位特定的标签位置,使用正则表达式找到具体内容
import导入一些库,做准备工作。
正则表达式(find开头),用来筛选信息(正则表达式用 re 库)。
以下例子爬取的内容是:电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,相关信息。
���代码如下:
# -*- codeing = utf-8 -*-
from bs4 import BeautifulSoup # 网页解析,获取数据
import re # 正则表达式,进行文字匹配
import urllib.request, urllib.error # 制定URL,获取网页数据
import sqlite3 # 进行SQLite数据库操作,数据导出 (import pandas as pd)
import xlwt # 进行excel操作
findLink = re.compile(r'<a href="(.*?)">') # 创建正则表达式对象,标售规则‼️影片详情链接的规则
findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)
findTitle = re.compile(r'<span class="title">(.*)</span>')
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
findJudge = re.compile(r'<span>(\d*)人评价</span>')
findInq = re.compile(r'<span class="inq">(.*)</span>')
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)
#���准备工作
def main():
baseurl = "https://movie.douban.com/top250?start=" #要爬取的网页链接,例:豆瓣网
datalist = getData(baseurl) #用来存储爬取的网页信息
dbpath = "命名.db" #当前目录新建数据库,存储进去
saveData(datalist,dbpath) # 保存数据
# ���以下为具体爬取网页过程
def getData(baseurl): #调用 getData(baseurl)
datalist = [] #用来存储爬取的网页信息
for i in range(0, 10): # 调用获取页面信息的函数,10次(电影评分Top250,每个页面只显示25个,所以需要访问页面10次)
url = baseurl + str(i * 25)
html = askURL(url) # 保存获取到的网页源码
#��� 逐一解析数据,需用到正则表达式
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all('div', class_="item"): # 查找符合要求的字符串
data = [] # 保存一部电影所有信息
item = str(item)
link = re.findall(findLink, item)[0] # 通过正则表达式查找
data.append(link)
imgSrc = re.findall(findImgSrc, item)[0]
data.append