初识python 之 爬虫:爬取豆瓣电影最热评论
主要用到lxml的etree解析网页代码,xpath获取HTML标签。
代码如下:
1 #!/user/bin env python
2 # author:Simple-Sir
3 # time:2019/7/17 22:08
4 # 获取豆瓣网正在上映电影最热评论
5 import requests
6 from lxml import etree
7
8 # 伪装浏览器
9 headers ={
10 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
11 'Referer':'https://movie.douban.com/'
12 }
13 # 获取首页网页信息并解析
14 url = 'https://movie.douban.com/cinema/nowplaying/chengdu/'
15
16 def getUrlText(url):
17 respons = requests.get(url,headers=headers) # 获取网页信息
18 urlText = respons.text
19 html = etree.HTML(urlText) # 使用lxml解析网页
20 return html
21
22 # 提取电影名称及详情地址链接列表
23 def getWallUrl(url):
24 hrefUrl = getUrlText(url)
25 ul = hrefUrl.xpath('//ul[@class="lists"]')[0] # 获取ul标签
26 liList = ul.xpath('./li') # # 获取li标签列表
27 liHrefs = []
28 for li in liList:
29 liHref = li.xpath('.//@href')[0]
30 name = li.xpath('@data-title')[0]
31 msg = {
32 name:liHref
33 }
34 liHrefs.append(msg)
35 return liHrefs
36
37 # 解析电影详情地址
38 def downPL(url):
39 moveUrl = getWallUrl(url)
40 n=0
41 for murl in moveUrl:
42 n+=1
43 for d in murl:
44 plHtml = getUrlText(murl[d])
45 plTextFull = plHtml.xpath('//div[@id="hot-comments"]//span[@class="hide-item full"]//text()')
46 plTextShort = plHtml.xpath('//div[@id="hot-comments"]//span[@class="short"]//text()')
47 if(len(plTextFull)==0 and len(plTextShort)>0):
48 print('正在写入《{}》的评论。'.format(d))
49 with open('豆瓣评论.txt','a+',encoding='utf-8') as fp:
50 fp.write('{}、《{}》的最热评论是:\n{}\n\n'.format(n,d,plTextShort[0]))
51 elif(len(plTextFull)>0):
52 print('正在写入《{}》的评论。'.format(d))
53 with open('豆瓣评论.txt','a+',encoding='utf-8') as fp:
54 fp.write('{}、《{}》的最热评论是:\n{}\n\n'.format(n,d,plTextShort[0]))
55 else:
56 print('正在写入《{}》的评论。'.format(d))
57 with open('豆瓣评论.txt','a+',encoding='utf-8') as fp:
58 fp.write('{}、《{}》暂无评论!\n\n'.format(n,d))
59 return print('{}部电影的所有评论已全部写入“豆瓣评论.txt”,请查看。'.format(n))
60
61 if __name__ == '__main__':
62 downPL(url)
获取豆瓣网正在上映电影最热评论
执行效果:


文件详情:

初识python 之 爬虫:爬取豆瓣电影最热评论的更多相关文章
- Python爬虫爬取豆瓣电影之数据提取值xpath和lxml模块
工具:Python 3.6.5.PyCharm开发工具.Windows 10 操作系统.谷歌浏览器 目的:爬取豆瓣电影排行榜中电影的title.链接地址.图片.评价人数.评分等 网址:https:// ...
- python 爬虫&爬取豆瓣电影top250
爬取豆瓣电影top250from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法requestfrom lxml impor ...
- Python小爬虫——抓取豆瓣电影Top250数据
python抓取豆瓣电影Top250数据 1.豆瓣地址:https://movie.douban.com/top250?start=25&filter= 2.主要流程是抓取该网址下的Top25 ...
- Python爬虫爬取豆瓣电影名称和链接,分别存入txt,excel和数据库
前提条件是python操作excel和数据库的环境配置是完整的,这个需要在python中安装导入相关依赖包: 实现的具体代码如下: #!/usr/bin/python# -*- coding: utf ...
- python爬虫-爬取豆瓣电影数据
#!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:27# 文件 :spider_05.py# IDE :PyChar ...
- python3 爬虫---爬取豆瓣电影TOP250
第一次爬取的网站就是豆瓣电影 Top 250,网址是:https://movie.douban.com/top250?start=0&filter= 分析网址'?'符号后的参数,第一个参数's ...
- Scrapy-redis分布式爬虫爬取豆瓣电影详情页
平时爬虫一般都使用Scrapy框架,通常都是在一台机器上跑,爬取速度也不能达到预期效果,数据量小,而且很容易就会被封禁IP或者账号,这时候可以使用代理IP或者登录方式爬,然而代理IP很多时候都很鸡肋, ...
- Python爬虫-爬取豆瓣电影Top250
#!usr/bin/env python3 # -*- coding:utf-8-*- import requests from bs4 import BeautifulSoup import re ...
- Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据
所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...
随机推荐
- 【Java 基础】Arrays.asList、ArrayList的subList注意事项
1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arrays.asL ...
- matplotlib 画图中图和次坐标轴
一: fig.add_axes 画图中图 fig = plt.figure() x = np.arange(1, 9, 1) y = np.linspace(1, 10, 8) left, botto ...
- 4.Vue.js-起步
Vue.js 起步 每个 Vue 应用都需要通过实例化 Vue 来实现. 语法格式如下: var vm = new Vue({ // 选项 }) 接下来让我们通过实例来看下 Vue 构造器中需要哪些内 ...
- Jenkins环境变量
目录 一.环境变量 二.自定义环境变量 三.自定义全局变量 四.常用变量定义 五.常用环境变量 一.环境变量 环境变量可以被看作是pipeline与Jenkins交互的媒介.比如,可以在pipelin ...
- Windows10计算文件SHA1 SHA256 SHA384 SHA512 or MD5
目录 Windows10计算文件SHA1 SHA256 SHA384 SHA512 or MD5? 1.计算SHA1 2.计算SHA256 3.计算SHA384 4.计算SHA512 5.计算MD5 ...
- HSPICE 电平触发D触发器仿真
一. HSPICE的基本操作过程 打开HSPICE程序,通过OPEN打开编写好的网表文件. 按下SIMULATE进行网表文件的仿真. 按下AVANWAVES查看波形图(仿真结果). 二. 网表文件结构 ...
- Java Record 的一些思考 - 默认方法使用以及基于预编译生成相关字节码的底层实现
快速上手 Record 类 我们先举一个简单例子,声明一个用户 Record. public record User(long id, String name, int age) {} 这样编写代码之 ...
- libevent源码学习(1):日志及错误处理
目录 错误处理函数 函数声明 __attribute__指令 函数定义 可变参数宏 _warn_helper函数 日志处理 event_log日志处理入口 日志处理回调函数指针log_fn 设置日志处 ...
- ts 遇到的问题
1. Property 'generatePdf' does not exist on type 'Element'. 问题:ts类型校验报错,使得编译失败 解决方法:将报错字段定义为any类型
- Vue-Router(一)
Vue-Router(一) 简介 vue-router是Vuejs的官方推荐路由,让用 Vue.js 构建单页应用变得非常容易.目前Vue路由最新的版本是4.x版本. vue-router是基于路由和 ...