【IT专家】Python 爬虫抓站 记录(虾米,百度,豆瓣,新浪微博)
- 格式:pdf
- 大小:317.97 KB
- 文档页数:5
基于python抓取豆瓣电影TOP250的数据及进行分析基于Python抓取豆瓣电影TOP250的数据及进行分析近年来,随着互联网的发展,人们对电影的需求不断增长。
豆瓣电影作为国内最大的电影评分平台之一,拥有庞大的用户群体和丰富的电影资源,其TOP250榜单更是成为了广大电影爱好者关注的焦点。
通过对该榜单的抓取和分析,我们可以深入了解在大众眼中哪些电影是具有代表性和口碑的影片,进一步推动电影产业的发展。
本文将基于Python编程语言,通过网络爬虫技术抓取豆瓣电影TOP250的数据,并据此进行一系列分析。
首先,我们需要明确的是,Python是一种简单易学的编程语言,具有强大的数据处理和分析能力,非常适合我们的研究目的。
在开始之前,我们需要搭建起爬虫所需的环境。
首先,我们需要安装Python的相关库。
其中,requests库用于发起HTTP请求,beautifulsoup库能够从HTML或XML文档中提取数据,pandas库用于数据的处理与分析。
接下来,我们需要分析豆瓣电影TOP250的网页结构,确定我们需要抓取的数据内容。
通过分析网页结构,我们可以得到所需抓取的信息包括电影名称、评分、导演、演员、上映年份、制片国家/地区和电影类型等。
根据这些信息,我们可以编写相应的代码,利用Python进行数据的抓取。
在实际操作中,我们首先需要向豆瓣电影TOP250的网址发起HTTP请求,获取网页的源代码。
然后,我们利用beautifulsoup库解析网页的HTML源码,并提取其中的所需信息。
接着,将提取得到的信息存储到一个数据结构中,最后,将数据保存为CSV文件,以便进行后续的分析。
一旦我们获得了所需的数据,就可以开始对其进行分析了。
首先,我们可以统计TOP250榜单中电影的评分分布情况,通过绘制直方图来展示。
同时,我们可以找到评分最高和最低的电影,并进一步了解它们的详细信息。
其次,我们可以对TOP250榜单中的电影类型进行统计,并绘制饼图来展示各个类型的占比情况。
《基于Python的豆瓣网站数据爬取与分析》篇一一、引言随着互联网的快速发展,网络数据爬取与分析已成为一种重要的研究手段。
豆瓣网作为国内知名的社交网站,拥有丰富的用户数据和内容资源。
本文旨在介绍如何使用Python进行豆瓣网站的数据爬取与分析,并展示其应用价值。
二、数据爬取1. 确定爬取目标在豆瓣网站上,我们可以根据需求选择要爬取的数据类型,如电影、书籍、音乐等。
本文以电影为例,介绍如何进行数据爬取。
2. 编写爬虫程序使用Python语言,我们可以借助第三方库如requests、BeautifulSoup等来实现对豆瓣网站的爬取。
首先,需要发送请求获取网页源代码,然后通过解析源代码提取所需数据。
在编写爬虫程序时,需要注意遵守豆瓣网的爬虫协议,避免对网站造成过大负担。
同时,还需要注意反爬虫策略,如设置请求头、使用代理等。
3. 数据存储将爬取到的数据存储在合适的格式中,如CSV、JSON等。
便于后续的数据分析和处理。
三、数据分析1. 数据清洗对爬取到的数据进行清洗,去除重复、无效、错误的数据,保证数据的准确性。
2. 数据处理对清洗后的数据进行处理,如统计、分类、聚类等。
可以使用Python中的pandas、numpy等库进行数据处理。
3. 数据可视化将处理后的数据以图表的形式展示出来,便于观察和分析。
可以使用matplotlib、seaborn等库进行数据可视化。
四、应用价值1. 用户需求分析通过对豆瓣网站上的用户数据进行爬取和分析,可以了解用户的需求和兴趣爱好,为产品开发和改进提供参考。
2. 电影市场分析通过对豆瓣网上的电影数据进行爬取和分析,可以了解电影的市场表现、观众评价等信息,为电影投资和宣传提供参考。
3. 竞争情报分析通过对竞争对手在豆瓣网上的数据进行分析,可以了解其产品特点、优势和不足,为企业的竞争策略制定提供参考。
五、结论本文介绍了基于Python的豆瓣网站数据爬取与分析的方法和应用价值。
《基于Python的豆瓣网站数据爬取与分析》篇一一、引言在大数据时代,信息资源的获取和利用显得尤为重要。
豆瓣网作为国内知名的社交网站之一,拥有丰富的用户数据和资源。
本文将介绍如何使用Python进行豆瓣网站的数据爬取与分析,旨在为相关领域的研究提供参考。
二、数据爬取1. 确定爬取目标首先,我们需要明确要爬取的数据类型和目标。
例如,我们可以选择爬取豆瓣电影的评分、评论、用户评价等信息。
2. 选择合适的爬虫框架Python提供了多种爬虫框架,如BeautifulSoup、Selenium等。
根据实际需求,我们选择使用BeautifulSoup结合requests库进行数据爬取。
3. 编写爬虫程序(1)发送请求:使用requests库向豆瓣网站发送请求,获取HTML页面。
(2)解析页面:使用BeautifulSoup解析HTML页面,提取所需数据。
(3)保存数据:将提取的数据保存为CSV或JSON格式文件,以便后续分析。
三、数据分析1. 数据清洗对爬取的数据进行清洗,去除重复、无效、异常的数据,保证数据的准确性。
2. 数据统计与分析(1)对电影评分进行统计分析,了解用户对不同类型电影的喜好程度。
(2)对电影评论进行情感分析,了解用户对电影的情感倾向和评价内容。
(3)分析用户评价的关键词和主题,了解用户关注的重点和需求。
3. 可视化展示使用Python的数据可视化库(如Matplotlib、Seaborn等)将分析结果进行可视化展示,以便更好地理解数据和分析结果。
四、案例分析以某部电影为例,对其在豆瓣网上的评分、评论及用户评价进行详细分析。
通过数据分析和可视化展示,可以更直观地了解用户对该电影的评价和反馈,为电影制作方提供有价值的参考信息。
五、结论与展望通过对豆瓣网站数据的爬取与分析,我们可以获取大量有关用户行为、喜好、需求等方面的信息。
这些信息对于网站运营者、商家、研究机构等都具有重要的参考价值。
同时,随着技术的发展和大数据时代的到来,数据爬取与分析将越来越重要。
Python爬⾍如何提取百度搜索到的内容?案例教你搜索引擎⽤的很频繁,现在利⽤Python爬⾍提取百度搜索内容,同时再进⼀步提取内容分析就可以简便搜索过程。
详细案例如下:完整代码:# coding=utf8import urllib2import stringimport urllibimport reimport random#设置多个user_agents,防⽌百度限制IPuser_agents = ['Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533+(KHTML, like Gecko) Element Browser 5.0','IBM WebExplorer /v0.94', 'Galaxy/1.0 [en] (Mac OS X 10.5.6; U; en)','Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)','Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14','Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko)Version/6.0 Mobile/10A5355d Safari/8536.25','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/28.0.1468.0 Safari/537.36','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; TheWorld)']def baidu_search(keyword,pn):p= {'wd': keyword}res=urllib2.urlopen(("/s?"+urllib.urlencode(p)+"&pn={0}&cl=3&rn=100").format(pn))html=res.read()return htmldef getList(regex,text):arr = []res = re.findall(regex, text)if res:for r in res:arr.append(r)return arrdef getMatch(regex,text):res = re.findall(regex, text)if res:return res[0]return ""def clearTag(text):p = pile(u'<[^>]+>')retval = p.sub("",text)return retvaldef geturl(keyword):for page in range(10):pn=page*100+1html = baidu_search(keyword,pn)content = unicode(html, 'utf-8','ignore')arrList = getList(u"<table.*?class="result".*?>.*?</a>", content)for item in arrList:regex = u"<h3.*?class="t".*?><a.*?href="(.*?)".*?>(.*?)</a>"link = getMatch(regex,item)url = link[0]#获取标题#title = clearTag(link[1]).encode('utf8')try:domain=urllib2.Request(url)r=random.randint(0,11)domain.add_header('User-agent', user_agents[r])domain.add_header('connection','keep-alive')response=urllib2.urlopen(domain)uri=response.geturl()print uriexcept:continueif __name__=='__main__':geturl('python')</a.*?href="(.*?)".*?></h3.*?class="t".*?></table.*?class="result".*?>都懂了吗?最后注意:光理论是不够的。
Python爬⾍——爬取⾖瓣top250完整代码说在前头:本次仅仅只是记录使⽤Python⽹络爬⾍爬取⾖瓣top250排⾏榜榜单的内容,爬取其它⽹页同理,可能爬取难度不同,但步骤类似。
注意:建议把 html ⽂件先爬取到本地保存,再从本地读取 html 进⾏后⾯的数据解析和保存操作,因为频繁访问同⼀个页⾯,可能被⽹站判定为异常访问⽽拒绝该IP访问资源,连切换为真实浏览器访问都可能会受限。
准备⼯作: 本次使⽤⾖瓣top250⽹址:主要步骤:爬取⽹页服务器返回给我们的是⼀个html⽂件,然后浏览器解析服务器返回的⽂件,通过解析呈现出我们平时看到的精彩⽹页内容,我们这⼀步骤要拿的,就是这个服务器返回发给我们的东西⾸页的⽹址是:https:///top250 或 https:///top250?start=点击第⼆页的⽹址是:https:///top250?start=25&filter=同理第三页的⽹址是:https:///top250?start=50&filter=不⽤管filter过滤器,可以发现规律,第page页的 start=25*(page-1)baseurl = 'https:///top250?start=' ,然后通过循环让字符串拼接 url = baseurl + str(i)i = 0, 25, 50, 75 ...... 就可以获取 top250 其它页的内容借助 urllib.request 获取 html,伪装成真实浏览器的报头,不然⾖瓣会返回 418错误(我是茶壶)获取html后保存在本地,最好保存在本地,避免每次都访问,因为频繁访问top250有可能被⾖瓣标记为异常访问解析数据解析保存的html⽂件,内容都在html⽂件中,我们要想办法把所需内容所在的标签块找出来,并根据规则找到所需的内容所在位置,把内容提取出来结束beautifulSoup解析标签块,再结合re正则表达式提取所需的内容将获取的内容存⼊列表或者类对象中保存数据前⾯已经解析数据并保存在了列表或者对象之中,变量释放空间就没了,我们要做的是把东西保存在本地的⽂件中保存获取的内容到本地text,执⾏⽂本读取操作或者excel,借助xlwt包写⼊excel,借助xlrd包读取excel完整代码:# -*- coding = utf-8 -*-# 解析⽹页from bs4 import BeautifulSoup as bf# 正则表达式import re# Excel表格操作import xlwt# 获取URL得到html⽂件import urllib.request as req# 设置单独全局变量,如需更加规范,也可以将电影信息封装成⼀个class类⽐如 class Movie: ...# 电影名称find_name = pile(r'<span class="title">(.*?)</span>')# 电影播放地址链接find_link = pile(r'<a href="(.*?)">')# 电影封⾯的地址链接,re.S让换⾏符包含在字符中find_imgSrc = pile(r'<img.*src="(.*?)"', re.S)# 电影评分find_score = pile(r'<span class="rating_num".*>(.*?)</span>')# 评分⼈数find_num = pile(r'<span>(\d*⼈)评价</span>')# 名句find_inq = pile(r'<span class="inq">(.*?)</span>')# 有些电影没有某些项,所以查找长度为0的时候,设置该项为空def set_film(file, content):# 检查查找内容的长度,如果不为0,说明查找到内容,则将内容转换成字符串类型if len(re.findall(file, content)) != 0:film = str(re.findall(file, content)[0])else:film = ""return film# 保存获取的html,避免出现ip异常的情况def write_html(path, html):file = open(path, 'w', encoding='utf-8')file.write(str(html))file.close()# 循环获取所有的html页⾯并提取所需信息保存到 data_list 列表def get_data():# 获得多有页⾯有价值的信息,然后集中存放与data_list列表中data_list = []# 循环遍历,修改?start=起始排⾏序号,获取不同分页的⾖瓣top信息,url分页格式去⾖瓣换页内容试试# 例如第⼀页第 top 0-24,第⼆页是top 25-49条 ?start=25 这个参数,会让服务器响应第⼆页的25条信息for i in range(0, 250, 25):# 使⽤⼆进制读取,这点很重要,报错⽆数次html = open('Data/html/html' + str(i//25) + '.html', 'rb')# 接下来是逐⼀解析数据bs = bf(html, 'html.parser')# 使⽤标签 + 属性组合查找,查找<div class="item"></div>的标签块# 注意:class是关键字,所以这⾥需要使⽤ class_ 代替f_list = bs.find_all('div', class_="item")# 使⽤re.findall(x, s) 或者 x.findall(s)效果⼀样for f in f_list:data = []# 将正则表达式提取的内容赋值给⾃定义变量file_name = set_film(find_name, str(f))file_num = set_film(find_num, str(f))file_link = set_film(find_link, str(f))file_img_src = set_film(find_imgSrc, str(f))file_score = set_film(find_score, str(f))file_inq = set_film(find_inq, str(f))# 将所有需要的数据保存到data列表data.append(file_name)data.append(file_score)data.append(file_num)data.append(file_link)data.append(file_img_src)data.append(file_inq)# 写⼊data(单条电影信息)列表,到总的 data_list(所有电影信息)列表data_list.append(data)html.close()return data_list# 保存⾖瓣的各页html⽂件def save_douban_html(base_url):for i in range(0, 250, 25):# 使⽤基础地址 'https:///top250?start=' + 偏移地址如 '25'url = base_url + str(i)# 获取html保存在本地,⽅便之后爬⾍操作,因为频繁爬取可能被⾖瓣发现异常html = ask_url(url)# 将⽂件批量保存在 Data/html/ ⽬录下 i//25 是整除,命名格式如 html0.html html1.html ...write_html('Data/html/html' + str(i//25) + '.html', html)# 获取html信息,并返回html信息def ask_url(url):# 设置传给服务器的header头部信息,伪装⾃⼰是正规浏览器访问headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0" }# ⽤于保存获取的html⽂件html = ""# 最好⽤ try-except 捕捉异常try:# 封装⼀个Request对象,将⾃定义的头部信息加⼊进去res = req.Request(url, headers=headers)# 向指定的url获取响应信息,设置超时,防⽌长时间耗在⼀个页⾯response = req.urlopen(res, timeout=10)# 读取html信息,使⽤decode('utf-8')解码html = response.read().decode('utf-8')# 如果出错,就捕捉报错信息并打印出,这⾥使⽤Exception 泛泛的意思⼀下except Exception as error:# 出现异常时候,打印报错信息print("Ask_url is Error : " + error)# 将获得的html页⾯信息返回return html# 以下split、main两个函数和 if __name__ 程序主⼊⼝是我个⼈编程习惯,与上述内容⽆本质关联# 定义分隔线长度,并返回分割线字符串def split(num):str1 = ""for i in range(1, num):# print("------------", end='')str1 += "------------"return str1# 读取⽂件⽂本def read_file(file_name):# 打开⽂本选择读模式file = open(file_name, 'r', encoding='utf-8')print(file.read())file.close()# 保存数据到txt⽂本中def save_data_txt(datas, save_file):# 打开⽂本选择写模式,并指定编码格式file = open(save_file, 'w', encoding='utf-8')# 不能直接写⼊list,所以通过遍历⼀条条写⼊for data in datas:for dat in data:file.write(dat + '\n')file.write(split(10) + '\n')file.close()# 设置excel的单元格字体样式def set_font(bold, size, horz):# 创建xlwt格式对象style_font = xlwt.XFStyle()# 设置字体是否为粗体style_font.font.bold = bold# 设置字体尺⼨⼤⼩style_font.font.height = size# 字体是否居中if horz:# 设置字体⽔平居中style_font.alignment.horz = 0x02# 设置字体垂直居中style_font.alignment.vert = 0x01# 设置单元格⾃动换⾏style_font.alignment.wrap = False# 返回设置的字体样式return style_font# 保存数据到excel⽂件中def save_data_excel(datas, save_path):# 创建⼀个xlwt对象,使⽤utf-8编码格式excel = xlwt.Workbook(encoding='utf-8')# 创建⼀个⼯作表,命名为top250sheet = excel.add_sheet('top250')# 设置前六列的列宽width_c = [256*20, 256*6, 256*12, 256*42, 256*72, 256*68]for i in range(0, 6):sheet.col(i).width = width_c[i]# 设置三种单元格样式 set_font(粗体,尺⼨,居中)style_font_title = set_font(True, 240, True)style_font_content = set_font(False, 220, True)style_font_content1 = set_font(False, 220, False)# 表格各列的列名titles = ['电影名称', '评分', '评论数', '电影链接', '图⽚链接', '电影名⾔']index = 0# 将标题写⼊excelfor title in titles:# (单元格⾏序号,单元格列序号,单元格的内容,单元格样式)sheet.write(0, index, title, style_font_title)index += 1# 将数据写⼊excelindex_r = 1# 从多条电影中每次取出⼀条for data in datas:index_c = 0# 从⼀条电影中每次取出⼀个属性for item in data:# 前三列设置居中对齐if index_c <= 2:sheet.write(index_r, index_c, item, style_font_content)# 后三列设置默认对齐,即左对齐else:sheet.write(index_r, index_c, item, style_font_content1)index_c += 1index_r += 1# 保存excel⽂件到指定路径excel.save(save_path)# 主程序def main():base_url = "https:///top250?start="# 1.爬取⽹页# 从⾖瓣上获取html⽂件并保存到本地⽬录下,该⽅法成功执⾏⼀次即可,保存html,接下来本地操作# save_douban_html(base_url)# 2.解析数据# 逐个解析保存在本地的html⽂件datas = get_data()# 3.保存数据# 保存爬取数据到本地txt⽂件# save_txt_path = 'Data/Text/top250.txt'# save_data_txt(datas, save_txt_path)# 将读取的txt⽂本打印到控制台# read_file('Data/Text/top250.txt')# 保存爬取数据到本地excel⽂件save_excel_path = 'Data/excel/top250.xls'save_data_excel(datas, save_excel_path)# 打印⾃定义分界线print(split(10))# 主程序⼊⼝if __name__ == '__main__':main()存储为⽂本⽂件 —— top250.txt存储为excel⽂件 —— top250.xls。
python爬虫500条案例
以下是一些Python爬虫的案例,每个案例都可以爬取500条数据:1. 爬取豆瓣电影Top250的电影信息,包括电影名称、评分、导演和主演等信息。
2. 爬取知乎某个话题下的问题和回答,包括问题标题、回答内容和回答者信息等。
3. 爬取新浪微博某个用户的微博内容和点赞数,包括微博正文、发布时间和点赞数等。
4. 爬取天猫某个品牌的商品信息,包括商品名称、价格、销量和评价等。
5. 爬取百度百科某个词条的内容和参考资料,包括词条简介、基本信息和参考链接等。
6. 爬取中国天气网某个城市的天气情况,包括当前天气、未来七天的天气预报和空气质量等。
7. 爬取微信公众号某个账号的文章信息,包括文章标题、发布时间和阅读量等。
8. 爬取京东某个商品分类下的商品信息,包括商品名称、价格、评论数和销量等。
9. 爬取猫眼电影某个地区的电影票房排行榜,包括电影名称、票房和上映时间等。
10. 爬取汽车之家某个车型的用户评价,包括评价内容、评分和用户信息等。
以上只是一些常见的爬虫案例,你可以根据自己的兴趣和需求,选择合适的网站和数据进行爬取。
注意,在进行爬虫时要遵守网站的相关规定,避免对网站造成过大的负担。
python爬虫豆瓣代码Python爬虫是一项非常基础和重要的技能,因为它可以让我们抓取各种网站的数据,从而方便我们进行数据分析和研究。
在这篇文章中,我们将介绍如何使用Python爬虫来抓取豆瓣网站的电影信息,来帮助读者更好地了解如何使用Python爬虫进行数据分析。
一、准备工作在开始编写Python爬虫之前,读者需要了解Python的基本语法知识,以及如何使用Python实现基本的数据处理功能。
此外,对于Python爬虫的技术细节,读者需要学习一些基本的库和框架,如requests, BeautifulSoup, pandas等等。
二、爬虫流程1.获取页面数据首先,我们需要使用requests库来获取豆瓣网页的HTML代码,定义好读取函数并传入我们要爬取的URL:```import requestsdef get_html(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/58.0.3029.110 Safari/537.3'}try:r = requests.get(url, headers=headers, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return "Error"```2.解析页面数据获取到HTML代码后,我们需要使用BeautifulSoup库来解析HTML,以提取出页面中的电影信息。
首先需要引入BeautifulSoup库,然后使用BeautifulSoup导入HTML代码:```from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'html.parser')```3.提取数据我们的目标是从页面中提取电影的名称、导演、演员、评分等信息,所以可以使用BeautifulSoup的各种方法,例如find_all()查找标签,get()获取属性等等,来提取所需的信息。
基于Python的豆瓣网站数据爬取与分析基于Python的豆瓣网站数据爬取与分析随着网络的普及和发展,豆瓣网站成为了一个知名的电影、图书、音乐等文化娱乐信息交流平台。
许多用户在该网站上分享自己对各种文化作品的评价和观点。
对这些数据进行爬取和分析,不仅可以了解用户的喜好和评价趋势,还可以帮助推荐个性化的文化产品。
本文介绍了一种基于Python的豆瓣网站数据爬取与分析方法,通过该方法可以获取豆瓣网站上的电影数据,并对该数据进行分析和可视化呈现。
首先,我们需要使用Python中的爬虫技术来获取豆瓣网站上的电影数据。
爬虫是一种自动化程序,它模拟人类操作浏览器获取网页中的数据。
Python提供了许多工具库,如BeautifulSoup和Requests,可以帮助我们实现网页数据的抓取。
我们可以使用Requests库向豆瓣网站发送HTTP请求,然后使用BeautifulSoup库来解析HTML页面,提取我们需要的电影数据。
通过分析豆瓣网站的页面结构,我们可以找到电影名称、评分和评论等关键信息。
在获取电影数据之后,我们可以使用Python中的数据分析工具来对数据进行处理和分析。
Python中有许多知名的科学计算和数据分析库,如NumPy、Pandas和Matplotlib。
这些库提供了丰富的数据处理和可视化功能,可以帮助我们快速分析和展示数据。
首先,我们可以使用Pandas库来加载抓取到的电影数据,并进行清洗和整理。
Pandas提供了强大的数据结构和数据处理函数,可以方便地对数据进行过滤、排序和聚合等操作。
我们可以使用Pandas来处理缺失数据和异常数据,保证数据的准确性和一致性。
此外,Pandas还提供了灵活的时间序列处理功能,可以帮助我们对电影数据进行按时间的分析。
然后,我们可以使用Matplotlib库来对电影数据进行可视化呈现。
Matplotlib是一个强大的绘图库,可以绘制各种类型的图表,如柱状图、折线图和散点图等。
Python爬虫有多简单?一文带你实战豆瓣电影TOP250数据爬取!熟悉Python的requests库即re之后,可以尝试构建一个简单的爬虫系统。
我们选用网站结构比较稳定且不会造成较大服务器负载的豆瓣网站,爬取豆瓣评分top250的电影名称、封面等详细信息。
一、网页分析1.网页概览首先在浏览器中输入以下网址打开爬取的目标网站豆瓣电影top250:https:///top250?start=225&filter=,得到如下界面。
通过查看豆瓣电影官网的robots协议,发现此网站并不在Disallow里,表明该网站不限制爬取。
2.匹配分析接着按下F12键查看谷歌浏览器的Devtools工具,发现第一部电影(即肖申克的救赎)的完整内容都在一个class属于'item'的<div>标签中,且其后每一部电影都在相同的结构中。
接着我们逐步通过查看源代码来进行信息匹配,通过下图可以看到在class为'pic'的div标签中储存了电影排名信息和图片url。
因此我们可以利用正则表达式中的非贪婪匹配依次匹配到每个电影条目中的电影排名和图片url信息,非贪婪匹配即(.*?)的原因在于此页源代码中包含了多部电影。
代码如下,第一个(.*?)即为排名,第二个(.*?)为图片url。
<div class='pic'>.*?<em class=''>(.*?)</em>.*?<img.*?src='(.*?)' class=''>.*?依次类推,名称和别名依次在class为'title'的<span>标签和class为'other'的<span>标签中,整合上面的正则表达式后代码如下:<div class='pic'>.*?<em class=''>(.*?)</em>.*?<img.*?src='(.*?)' class=''>.*?div class='info.*?class='hd'.*?class='title'>(.*?)</span>.*?class='other'>(.*?)接下来是导演主演、年份国家和类型的标签位置和正则表达式:<div class='pic'>.*?<em class=''>(.*?)</em>.*?<img.*?src='(.*?)' class=''>.*?div class='info.*?class='hd'.*?class='title'>(.*?)</span>.*?class='other'>(.*?)</span>.*?<div class='bd'>.*?<p class=''>(.*?)<br>(.*?)</p>.*?之后是评分和评价人数的标签位置及整合后的正则表达式:<div class='pic'>.*?<em class=''>(.*?)</em>.*?<img.*?src='(.*?)' class=''>.*?divclass='info.*?class='hd'.*?class='title'>(.*?)</span>.*?class='other'>(.*?)</span>.*?<div class='bd'>.*?<p class=''>(.*?)<br>(.*?)</p>.*?class='star.*?<spanclass='(.*?)'></span>.*?spanclass='rating_num'.*?average'>(.*?)</span>.*?<span>(.*?)</spa n>.*?最后是提取储存在class为'inq'的<span>标签中的经典评价内容:<div class='pic'>.*?<em class=''>(.*?)</em>.*?<img.*?src='(.*?)' class=''>.*?div class='info.*?class='hd'.*?class='title'>(.*?)</span>.*?class='other'>(.*?)</span>.*?<div class='bd'>.*?<p class=''>(.*?)<br>(.*?)</p>.*?class='star.*?<spanclass='(.*?)'></span>.*?spanclass='rating_num'.*?average'>(.*?)</span>.*?<span>(.*?)</spa n>.*span class='inq'?>(.*?)</span>二、爬虫编写1.网页获取在进行上面的匹配分析之后我们得到了本文最核心的正则匹配表达式,接下来我们开始尝试写出网页获取的代码。
python7个爬虫小案例详解(附源码)Python 7个爬虫小案例详解(附源码)1. 爬取百度贴吧帖子使用Python的requests库和正则表达式爬取百度贴吧帖子内容,对网页进行解析,提取帖子内容和发帖时间等信息。
2. 爬取糗事百科段子使用Python的requests库和正则表达式爬取糗事百科段子内容,实现自动翻页功能,抓取全部内容并保存在本地。
3. 抓取当当网图书信息使用Python的requests库和XPath技术爬取当当网图书信息,包括书名、作者、出版社、价格等,存储在MySQL数据库中。
4. 爬取豆瓣电影排行榜使用Python的requests库和BeautifulSoup库爬取豆瓣电影排行榜,并对数据进行清洗和分析。
将电影的名称、评分、海报等信息保存到本地。
5. 爬取优酷视频链接使用Python的requests库和正则表达式爬取优酷视频链接,提取视频的URL地址和标题等信息。
6. 抓取小说网站章节内容使用Python的requests库爬取小说网站章节内容,实现自动翻页功能,不断抓取新的章节并保存在本地,并使用正则表达式提取章节内容。
7. 爬取新浪微博信息使用Python的requests库和正则表达式爬取新浪微博内容,获取微博的文本、图片、转发数、评论数等信息,并使用BeautifulSoup 库进行解析和分析。
这些爬虫小案例涵盖了网络爬虫的常见应用场景,对初学者来说是很好的入门教程。
通过学习这些案例,可以了解网络爬虫的基本原理和常见的爬取技术,并掌握Python的相关库的使用方法。
其次,这些案例也为后续的爬虫开发提供了很好的参考,可以在实际应用中进行模仿或者修改使用。
最后,这些案例的源码也为开发者提供了很好的学习资源,可以通过实战来提高Python编程水平。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系Python 爬虫抓站记录(虾米,百度,豆瓣,新浪微博)2012/12/07 9170 python 下用到的库,urllib, urllib2, BeautifulSoup, cookielib, mechanize, re
看Firebug模拟浏览器行为。
1. 虾米
虾米不用登陆,没有IP限制,最简单。
Python抓了下Xiami电台的试听数里用的是
import urllib2
content = urllib2.urlopen(‘xiami/artist/top/id/1234’).read()
每个歌手爬个两三页。
把试听数10000以上的歌记下来。
歌手id大概有11w。
处理网页用split,正则表达式repile,BeautifulSoup都成。
( Beautiful Soup的中文文档crummy/software/BeautifulSoup/bs3/documentation.zh.html )
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(content)
就能对与/ 中间的内容Lime。
2. 百度
如果想在空间里取米粒之类的操作就要登陆,mechanize比较好用。
import mechanizeimport cookielib
# Browserbr = mechanize.Browser()
# Cookie Jarcj = cookielib.LWPCookieJar()br.set_cookiejar(cj)
# Browser optionsbr.set_handle_equiv(True)br.set_handle_gzip(True)br.set_handle_redirect(True)br. set_handle_referer(True)br.set_handle_robots(False)
br.addheaders = [(‘User-agent’, ‘Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1)。