建设电子网站前的市场分析,网站建设丶金手指C排名15,手机网站js特效,市场调研的重要性一、什么是爬虫
网络爬虫#xff0c;是一种按照一定规则#xff0c;自动抓取互联网信息的程序或者脚本。由于互联网数据的多样性和资源的有限性#xff0c;根据用户需求定向抓取相关网页并分析也成为如今主流的爬取策略。 1 爬虫可以做什么 你可以爬取网络上的的图片#…一、什么是爬虫
网络爬虫是一种按照一定规则自动抓取互联网信息的程序或者脚本。由于互联网数据的多样性和资源的有限性根据用户需求定向抓取相关网页并分析也成为如今主流的爬取策略。 1 爬虫可以做什么 你可以爬取网络上的的图片爬取自己想看的视频等等只要你能通过浏览器访问的数据都可以通过爬虫获取。 2 爬虫的本质是什么 模拟浏览器打开网页获取网页中我们想要的那部分数据 学习案例爬取豆瓣电影 Top 250的基本信息
引入第三方模块
# 引入第三方模块
from bs4 import BeautifulSoup #网页解析获取数据
import re #正则表达式进行文字匹配
import urllib.request,urllib.error #制定URL获取网页数据
import xlwt #进行Excel操作
import sqlite3 #进行数据库操作
正则表达式——制定获取数据规则
# 影片详情链接规则
findLinkre.compile(ra href(.*?)) #创建正则表达式对象表示规则字符串模式
findImgre.compile(rimg.*src(.*?)?,re.S) #影片图片
findTitlere.compile(rspan classtitle(.*)/span) #影片名字
findRatingre.compile(rspan classrating_num propertyv:average(.*)/span) #影片评分
findJudgere.compile(rspan(\d*)人评价/span) #影片评价人数
findIngre.compile(rspan classing(.*)/span) #找到概况
findBdre.compile(rp class(.*?)/p,re.S) #找到影片的相关内容 完整代码 # 引入第三方模块
from bs4 import BeautifulSoup #网页解析获取数据
import re #正则表达式进行文字匹配
import urllib.request,urllib.error #制定URL获取网页数据
import xlwt #进行Excel操作
import sqlite3 #进行数据库操作def main():baseurlhttps://movie.douban.com/top250?startdataListgetData(baseurl)savepath.\\豆瓣电影Top250.xls# 影片详情链接规则
findLinkre.compile(ra href(.*?)) #创建正则表达式对象表示规则字符串模式
findImgre.compile(rimg.*src(.*?)?,re.S) #影片图片
findTitlere.compile(rspan classtitle(.*)/span) #影片名字
findRatingre.compile(rspan classrating_num propertyv:average(.*)/span) #影片评分
findJudgere.compile(rspan(\d*)人评价/span) #影片评价人数
findIngre.compile(rspan classing(.*)/span) #找到概况
findBdre.compile(rp class(.*?)/p,re.S) #找到影片的相关内容def getData(baseurl):dataList[]for i in range(0,10):# 调用获取页面信息的函数 10次urlbaseurl str(i*25)htmlaskURL(url) # 保存获取到的源码soupBeautifulSoup(html,html.parser)for item in soup.find_all(div,class_item): #查找符合要求的字符串data[] #保存电影信息item str(item)#获取影片详情链接linkre.findall(findLink,item)[0] #re库用来通过正则表达式查找指定的字符串data.append(link) #添加链接imgSrcre.findall(findImg,item)[0]data.append(imgSrc) #添加图片titlesre.findall(findTitle, item)[0]if(len(titles)2): #片名可能有两个名字一个中文一个外文ctitletitles[0]data.append(ctitle) #添加中文名otitletitles[1].replace(/,)data.append(otitle) #添加外文名else:data.append(titles[0]) # 添加图片data.append( ) #留空保持Excel数据一致性ratingre.findall(findRating, item)[0]data.append(rating) # 添加评分judgeNum re.findall(findJudge, item)[0]data.append(judgeNum) # 添加评分人数ing re.findall(findIng, item)if len(ing)!0:inging[0].replace(。,)data.append(ing) # 添加概述else:data.append( )bd re.findall(findBd, item)[0]bdre.sub(br(\s)?/(\s)?, ,bd)bdre.sub(/, ,bd)data.append(bd.strip()) # 添加影片的相关内容dataList.append(data) #把处理好的电影信息放入dataListprint(dataList)return dataList# 得到指定一个URL的网页内容
def askURL(url):# head用户代理本质上告诉浏览器我们接收什么水平的数据head{User-Agent: Mozilla / 5.0(Linux;Android6.0;Nexus5 Build / MRA58N) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 80.0.3987.87 Mobile Safari / 537.36}requesturllib.request.Request(url,headershead)htmltry:responseurllib.request.urlopen(request)htmlresponse.read().decode(utf-8)# print(html)except urllib.error.URLError as e:if hasattr(e,code):print(e.code)if hasattr(e,reason):print(e.reason)return htmldef saveData(savepath):print(save.....)if __name__ __main__:# 调用函数main()