# -*- coding: utf-8 -*-
"""
豆瓣最新上映电影爬取
# ul = etree.tostring(ul, encoding="utf-8").decode("utf-8")
""" import requests
from lxml import etree #1.抓取目标网站页面
def getHtml(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
'Referer': 'https://movie.douban.com/',
'Accept': 'application/json, text/javascript, */*; q=0.01'
} resp = requests.get(url, headers=headers)
# print(resp.text)#返回的是经过解码后的字符串,是str(unicode)类型,有时候会出现解码为乱码的情况,这时就需要自己指定解码方式
# print(resp.content)#返回的是一个原生的字符串,就是从网页上抓取的没有经过处理的字符串,是bytes类型
text = resp.text
return text #2.将抓取的网页根据一定规则进行提取
def extractData(text):
html = etree.HTML(text)
#1拿到第一个class='lists'的ul元素
ul = html.xpath("//ul[@class='lists']")[0] #2获取每一部电影的信息,ul标签下的所有li标签
lis = ul.xpath("./li")
movies = []#用于存放所有电影的列表
for li in lis:
#获取li的data-title属性
title = li.xpath("@data-title")[0]#电影名称
score = li.xpath("@data-score")[0]#评分
duration = li.xpath("@data-duration")[0]#持续时间
director = li.xpath("@data-director")[0]#导演
actors = li.xpath("@data-actors")[0]#演员
thumnail = li.xpath(".//img/@src")[0]#.代表当前标签,拿到所有电影的缩略图 # 构造成字典
movie = {
'title': title, 'score': score,
'duration': duration, 'director': director,
'actors': actors, 'thumnail': thumnail
}
movies.append(movie)
return movies if __name__ == "__main__":
url = "https://movie.douban.com/cinema/nowplaying/beijing/"
text = getHtml(url)
print(extractData(text))

最新文章

  1. Tortoise SVN 版本控制常用操作汇总(show log)
  2. swift language
  3. javascript运算符——关系运算符
  4. C# 中的 ref 和 out 的意义和使用方法
  5. Android(java)学习笔记182:保存数据到SD卡 (附加:保存数据到内存)
  6. webfont自定义字体的实现方案
  7. C语言qsort函数算法性能测试
  8. Android内核驱动程序的编写和编译过程
  9. socket通信的json数据传输与获取
  10. APACHE服务器出现No input file specified.的完美解决方案
  11. 调参贝叶斯优化(BayesianOptimization)
  12. OpenGL.tutorial06键盘和鼠标
  13. loadrunner 脚本优化-参数化之Parameter List参数取值
  14. Ajax之Jquery封装使用举例2(Json和JsonArray处理)
  15. redis的事务不是原子性
  16. FZU 2150 Fire Game(点火游戏)
  17. spark streaming集成kafka接收数据的方式
  18. UI设计师需要熟记的45个快捷键Windows、Mac
  19. 使用CSS定位元素实现水平垂直居中效果
  20. 利用Docker搭建java项目开发环境

热门文章

  1. python-Web-数据库-Redis
  2. python网络应用篇
  3. jvm的学习笔记:二、类的初始化,代码实战(1)
  4. webdriervAPI(常用的js方法)
  5. ajax提交表单包含文件
  6. icon.css
  7. SQL 批量添加的语法
  8. mysql --single-transaction 在从库导入完数据以后要在配置文件/etc/my.cnf 中加上read_only=1的参数
  9. JDBC基本操作
  10. HP UNIX弱口令