思路很简单,先将原网页爬取出来,然后用正则表达式、BeautifulSoup和xpath3种方法提取想要的信息,这里暂时先只爬取电影名、导演、评分和标语。

import re
import csv
import requests
from lxml import etree
from bs4 import BeautifulSoup
from urllib.parse import urlencoderoot = 'https://movie.douban.com/top250'
para = {'start': 0, 'filter': ''}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'' Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.55'}# 正则表达式
writedata = []
pattern = re.compile(r'<li>.*?<div class="info">.*?<span class="title">(?P<name>.*?)</span>'r'.*?<p class="">(?P<director>.*?)&nbsp'r'.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>'r'.*?<span class="inq">(?P<quote>.*?)</span>', re.S)
for i in range(10):para['start'] = i * 25url = root + '?' + urlencode(para)resp = requests.get(url, headers=headers)for i in pattern.finditer(resp.text):writedata.append([i.group('name'), i.group('director').strip(), i.group('score'), i.group('quote')])resp.close()# BeautifulSoup
writedata = []
for i in range(10):para['start'] = i * 25url = root + '?' + urlencode(para)resp = requests.get(url, headers=headers)# 生成bs对象bs = BeautifulSoup(resp.text, 'html.parser')# 从bs对象中查找数据items = bs.find_all(name='div', attrs={'class': 'info'})for item in items:name = item.find_all(name ='span', class_='title')[0].textdirector = item.find_all(name ='p', class_='')[0].text.strip()score = item.find_all(name='span', class_='rating_num')[0].textquote = item.find_all(name='span', class_='inq')if(quote == []):quote = ""else:quote = item.find_all(name='span', class_='inq')[0].textwritedata.append([name, director, score, quote])resp.close()# xpath
writedata = []
for i in range(10):para['start'] = i * 25url = root + '?' + urlencode(para)resp = requests.get(url, headers=headers)tree = etree.HTML(resp.text)for j in range(1, 26):name = tree.xpath(f'//*[@id="content"]/div/div[1]/ol/li[{j}]/div/div[2]/div[1]/a/span[1]/text()')[0]# 一次提取无法将导演信息准确提取出,需要利用正则表达式再提取一次message = tree.xpath(f'//*[@id="content"]/div/div[1]/ol/li[{j}]/div/div[2]/div[2]/p[1]/text()[1]')[0].strip()director = re.search(r'导演: (?P<director>.*?) ', message, re.S).group()score = tree.xpath(f'//*[@id="content"]/div/div[1]/ol/li[{j}]/div/div[2]/div[2]/div/span[2]/text()')[0]quote = tree.xpath(f'//*[@id="content"]/div/div[1]/ol/li[{j}]/div/div[2]/div[2]/p[2]/span/text()')if(quote == []):quote = ""else:quote = quote[0]writedata.append([name, director, score, quote])resp.close()# 保存
with open('films.csv', 'w', newline="", encoding='utf-8') as f:csvwriter = csv.writer(f)csvwriter.writerow(['name', 'director', 'score', 'quote'])csvwriter.writerows(writedata)
f.close()

3种方法作比较,xpath是最简单的,在chrome中找到想要提取的元素后可以直接右键复制路径,不过可能需要正则表达式进行进一步处理;正则表达式写起来较为复杂,但是运行速度和效率都最高。

python爬虫 提取豆瓣Top250电影信息相关推荐

  1. Python 爬虫分析豆瓣 TOP250 之 信息字典 和 马斯洛的锥子

    问题 本文是对<Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?> 一文的补充 我们以<追风少年>为例 用chrome的developer tool查看源 ...

  2. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  3. Python爬取豆瓣Top250电影中2000年后上映的影片信息

    Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...

  4. Python爬取豆瓣Top250电影可见资料并保存为excel形式

    Python爬取豆瓣Top250电影可见资料并保存为excel形式 利用requests第三方库实现网页的元素爬取,再使用openpyxl库进行信息的录入. 具体思路 1.分析网页的headers. ...

  5. 数据分析与挖掘案例之使用python抓取豆瓣top250电影数据进行分析

    使用python抓取豆瓣top250电影数据进行分析 抓取豆瓣Top250电影数据的链接和电影名称 代码如下: import urllib.request as urlrequest from bs4 ...

  6. 豆瓣Top250电影信息海报爬虫

    前些时候老师布置了一个小作业,让爬取豆瓣top250电影的相关信息,把每一部电影的信息以txt文本保存,并下载电影海报图片,一部电影创建一个文件夹. 代码编写分为如下几步 1.创建文件夹(我是在D盘先 ...

  7. python采用requests+bs4爬取豆瓣top250电影信息

    爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...

  8. python爬取豆瓣TOP250电影

    按照小甲鱼的爬虫教程,再自己修改了一部分. 废话不多说,直接贴代码 import requests from bs4 import BeautifulSoup import redef open_ur ...

  9. python 豆瓣评论分析方法_使用python抓取豆瓣top250电影数据进行分析

    抓取豆瓣Top250电影数据的链接和电影名称 代码如下: import urllib.request as urlrequest from bs4 import BeautifulSoup impor ...

  10. Python爬虫项目-豆瓣网电影排名TOP250

    开发背景:该项目是给电影爱好者提供的,利用爬虫爬取豆瓣网上电影榜排名TOP250的电影,然后选取自己最喜欢的电影看,有电影名称,电影链接,导演,演员,以及有多少人观看并评分 功能介绍:实时爬取豆瓣网上 ...

最新文章

  1. 10张图带你深入理解Docker容器和镜像--云平台技术栈07
  2. python scipy卷积 图像卷积
  3. 牛客练习赛25 因数个数和
  4. php des加密 和java胡同_PHP版本DES加密解(对应.net版与JAVA版)
  5. cover-letter
  6. 关于“我的藏书阁:.NET/数据库应用开发”的几点看法。
  7. Python+pandas使用交叉表分析超市营业额数据
  8. 纽约出租车计费问题:数据清洗与初探
  9. 性能测试学习09_场景设计(一)
  10. linux快速安装mysql教程
  11. 神经网络学习小记录55——Keras搭建常见分类网络平台(VGG16、MobileNet、ResNet50)
  12. X1000代码烧写配置
  13. system/build.prop参数说明
  14. Red5 流媒体技术(初级了解)
  15. 允许用户使用 MAK 密钥激活 Office 2010 批量许可版
  16. Smbus host controller not enabled Assuming drive cache : write through
  17. autojs教程:贝壳赚app脚本代码
  18. 翻译: 网页排名PageRank算法的来龙去脉 以及 Python实现
  19. python笑傲江湖_PHP 2019年继续笑傲江湖
  20. SPDR年内增量尽数被抹 市场看空金市

热门文章

  1. 【山大智云】SeafileServer源码分析之CDC(基于内容长度可变分块)
  2. pymol怎么做底物口袋表面_高质量PyMOL作图教程
  3. 红米手机html文件,红米手机中ES文件浏览器无法删除SD卡中文件的解决办法-es文件浏览器...
  4. 每日数学-三角变换恒等式
  5. 公安部中标十大身份证阅读器品牌型号
  6. java代码实现流程中的会签_一个简单的会签实例
  7. matlab 回声状态网络ESN的时间序列预测
  8. 6.25考试整理:江城唱晚不老梦棠梨煎雪——题解
  9. Python神经网络学习--神经网络知识先导(一)--什么是神经网络?
  10. 泰尔指数r语言_EG指数:从繁琐到简单