首先声明需要用的库,当然我还用到了os库,将工作路径修改到了我指定的路径。os.chdir(r"C:\Users…")

from lxml import etree
import requests
import time
import json

豆瓣top250总共有10页,每页25部电影,每页的url都是有规律的,第一页的url是“https://movie.douban.com/top250”,第二页的url是“https://movie.douban.com/top250?start=25&filter=”也就是start参数会随着页码变化,首页就是start=0,我们首先实现get_page()方法并传入参数url

def get_page(url):headers={"User-Agent":'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'}#请求头可以通过F12快捷键获得response=requests.get(url,headers=headers)response.encoding=response.apparent_encoding#由于网站的编码很多都不同,使用response.apparent_encoding获取网站的编码格式。return response.text

这样运行后就获得了首页的源代码了,接下来就是解析网页,提取信息。
我们使用Xpath来进行相应信息的抽取。

def get_message(text)
""":parse text 是页面返回的源代码使用xpath提取我们需要的电影名字,排名,影评等信息"""
html=etree.xpath(text)
rank=html.xpath('//div[@class="pic"]/em/text()')
name=html.xpath('//div[@class="hd"]/a/span[1]/text()')
score=html.xpath('//div[@class="star"]/span[contains(@class,"rating_num")]/text()')
words=html.xpath('//p[@class="quote"]/span/text()')
for items in range(len(rank)):yield {"rank":rank[items],"name":name[items],"score":score[items],"words":words[items]}

这样就提取了电影名字、评分、排名、影评等内容。并赋值为一个字典,形成数据化结构。随后我们就要将提取的结果写入文件。由于字典形式无法直接写入txt,所以要用JSON库的dumps()方法。

def write_file(content):with open("result.txt","a",encoding="gb18030") as f:f.write(json.dumps(content,ensure_ascii=False)+'\n')

接下来就是构建网址,豆瓣top250总共有10页,每页25部电影,每页的url都是有规律的,第一页的url是“https://movie.douban.com/top250”,第二页的url是“https://movie.douban.com/top250?start=25&filter=”也就是start参数会随着页码变化,首页就是start=0。

def change_url(start):url="https://movie.douban.com/top250?start="+str(start)+"&filter="return url
def main(start):url=change_url(start)text=get_page(url)for i in get_message(text):print(i)write_file(i)
if __name__=="__main__":for i in range(10):start=25*10main(start)time.sleep(3) #防止反爬虫,如果速度过快可能会无响应,设置延时等待

全部代码,如下:

from lxml import etree
import requests
import time
import json
def get_page(url):headers={"User-Agent":'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'}response=requests.get(url,headers=headers)response.encoding=response.apparent_encodingreturn response.text
def get_message(text):html=etree.xpath(text)rank=html.xpath('//div[@class="pic"]/em/text()')name=html.xpath('//div[@class="hd"]/a/span[1]/text()')score=html.xpath('//div[@class="star"]/span[contains(@class,"rating_num")]/text()')words=html.xpath('//p[@class="quote"]/span/text()')for items in range(len(rank)):yield {"rank":rank[items],"name":name[items],"score":score[items],"words":words[items]}
def write_file(content):with open("result.txt","a",encoding="gb18030") as f:f.write(json.dumps(content,ensure_ascii=False)+'\n')
def change_url(start):url="https://movie.douban.com/top250?start="+str(start)+"&filter="return url
def main(start):url=change_url(start)text=get_page(url)for i in get_message(text):print(i)write_file(i)
if __name__=="__main__":for i in range(10):start=25*10main(start)time.sleep(3) #防止反爬虫,如果速度过快可能会无响应,设置延时等待

目前发现问题就是如果某部电影没有影评就会出现影评错乱的现象导致列表长度无法匹配,求大神指教。个人博客,小白一个,勿喷。

利用xpath解析器爬取豆瓣电影top250相关推荐

  1. 利用定向网络爬虫爬取豆瓣电影top250【Python】

    最近在外地实习,闲来无事学了一下requests库和BeautifulSoup,掌握基本用法之后试着爬取了一下豆瓣电影top250,中间也参考了不少其他大佬的博客,所以最后写出来的代码也都大同小异吧, ...

  2. xpath解析爬虫爬取豆瓣图书Top250的数据

    这是在学习阶段写的爬虫,爬取的是豆瓣图书Top250榜的名称,作者,评分等数据 第一次写文章,如果有什么问题,欢迎各位大佬进行指正,谢谢来踩. 1.首先需要明确自己想要爬取的内容,并在网页中查看数据是 ...

  3. 【实战1】用BeatuifulSoup解析器爬取豆瓣Top250电影的名称

    [实战1]用BeatuifulSoup解析器爬取豆瓣Top250电影的名称 一. 爬虫的普遍步骤 二. 项目目标分析 三.完整爬取代码 参考链接: https://www.bilibili.com/v ...

  4. 利用python爬取豆瓣电影top250

    利用python爬取豆瓣电影top250: 注:本内容只是作为个人学习记录 1.业务分析 进入网页https://movie.douban.com/top250 可以看见每部电影都呈现在眼前,点击电影 ...

  5. python xpath爬取电影top100_python爬取豆瓣电影top250

    爬取豆瓣电影top250比猫眼top100复杂了一点点,这里主要使用到的工具是BeautifulSoup网页解析库和正则表达式,个人认为,对于静态网页的爬取,Xpath查询语句和正则表达式是最有力的武 ...

  6. python爬取豆瓣电影top250_【Python3爬虫教程】Scrapy爬取豆瓣电影TOP250

    今天要实现的就是使用是scrapy爬取豆瓣电影TOP250榜单上的电影信息. 步骤如下: 一.爬取单页信息 首先是建立一个scrapy项目,在文件夹中按住shift然后点击鼠标右键,选择在此处打开命令 ...

  7. 爬取豆瓣电影Top250影片信息

    爬取豆瓣电影Top250影片信息 查看影片的详细信息 爬取过程 需安装的包 确定爬取地址 发送请求头 解析数据 保存数据 完整代码 查看影片的详细信息 进入豆瓣电影Top250,选择某一影片,右击,选 ...

  8. #爬取豆瓣电影top250

    文章目录 1 创建jupyter环境及安装相关的包 1.1 安装jupyter 1.2安装requests和lxml 2 分析网页链接 3 爬取网页 3.1 请求源代码 3.2 设置浏览器代理 3.3 ...

  9. 案例:爬取豆瓣电影Top250中的电影信息

    案例:爬取豆瓣电影Top250中的电影信息 豆瓣电影Top250首页 分析请求地址 在豆瓣电影Top250首页的底部可以确定电影信息一共有10页内容,每页25个电影信息,如下图: 切换页面,可以看到浏 ...

最新文章

  1. Atitit .linux 取回root 密码q99
  2. 征战蓝桥 —— 2014年第五届 —— C/C++A组第8题——地宫取宝
  3. 计算机网络阅读报告,计算机网络实验二报告
  4. php mysql 学习周期_学习PHPMYSQL到目前为止 所有的区别特点
  5. linux如何判断网线插入_快速鉴定网线质量的常用方法
  6. @sql 单元测试_如何在SQL单元测试中使用假表?
  7. Windows XP搜索功能 包含文字 搜索不到内容的解决办法
  8. 说出this的三个应用
  9. logistic回归分析优点_Logistic回归——回归系数
  10. Android apps 拍立知-功能实现(百度tts语音合成使用)
  11. biosrecovery什么意思_卡刷和线刷手机什么意思 Recovery使用方法
  12. 新世纪电影城热闹的三月 好片连连看 图
  13. HTML中 src alt align 分别是什么意思?
  14. 语法长难句——并列句的练习
  15. Volatility内存取证使用
  16. 硬件防火墙和软件防火墙的比较
  17. Python学习笔记_获取猫耳广播剧
  18. PACS—医学影像信息化的基础
  19. python分析:爬取《灵笼》这部国产动漫弹幕,分析词云!看看网友究竟在说啥?
  20. mysql基础单词总结

热门文章

  1. 手机html己停用怎么办,iphone以停用怎么办(苹果手机已停用有什么办法)
  2. android浏览器 icloud,iCloud.com现在支持iOS/Android原生浏览器了
  3. 微分几何笔记(4) —— 二维三维空间中曲线的曲率以及环绕数
  4. python里try和except用法_Python中的错误和异常处理简单操作示例【try-except用法】...
  5. sql server EXCEPT用法运算
  6. 国潮邂逅养生,七天素养助你开启新中式健康生活
  7. centos下dnf指定软件安装路径
  8. 僵尸毁灭工程如何修改服务器难度,僵尸毁灭工程联机模式设置教程
  9. web应用自动检测客户端浏览器,并转跳到不同页面
  10. 信安之星(iSecStar)U盘安全管理系统