前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫爬取豆瓣电影之数据提取值

Python爬虫爬取豆瓣电影之数据提取值

作者头像
py3study
发布2020-01-19 14:20:10
7820
发布2020-01-19 14:20:10
举报
文章被收录于专栏:python3python3

工具:Python 3.6.5、PyCharm开发工具、Windows 10 操作系统、谷歌浏览器

目的:爬取豆瓣电影排行榜中电影的title、链接地址、图片、评价人数、评分等

网址:https://movie.douban.com/chart

语法要点

xpath语法:

谷歌浏览器安装 xpath helper插件:帮助我们从elements中定位数据

1、选择节点(标签)

  (1)、/html/head/meta:能够选中html下的所有的meta标签

  (2)、//li:当前页面上的所有的li标签

  (3)、/html/head//link:head下的所有link标签

2、//:能够从任意节点开始选择

  (1)、//li:当前页面上的所有的li标签

  (2)、/html/head//link:head下的所有的link标签

3、@符号的用途

  (1)、选择具体某个元素://div[@class='feed']/ul/li,选择class='feed'的div下的ul下的li

  (2)、a/@href:选择a的href的值

4、获取文本

  (1)、/a/text():获取a下的文本

  (2)、/a//text():获取a下的所有文本

示例

lxml语法:

1、安装:pip install lxml

2、使用

  from lxml import etree

  element = etree.HTML("html字符串")

  element.xpath("")

代码:

代码语言:javascript
复制
 1 from lxml import etree
 2 import requests
 3 
 4 url = "https://movie.douban.com/chart"
 5 
 6 headers = {
 7 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
 8 }
 9 response = requests.get(url,headers=headers)
10 html_str = response.content.decode()
11 
12 #print(html_str)
13 
14 html = etree.HTML(html_str)
15 print(html)
16 
17 #1.获取所有的电影的URL地址
18 #url_list = html.xpath("//div[@class='indent']/div/table//div[@class='pl2']/a/@href")
19 #print(url_list)
20 
21 #2.所有图片的地址
22 #img_list = html.xpath("//div[@class='indent']/div/table//a[@class='nbg']/img/@src")
23 #print(img_list)
24 ret1 = html.xpath("//div[@class='indent']/div/table")
25 print(ret1)
26 for table in ret1:
27     item = {}
28     item["title"] = table.xpath(".//div[@class='pl2']/a/text()")[0].replace("/","").strip()
29     item["href"] = table.xpath(".//div[@class='pl2']/a/@href")[0]
30     item["img"] = table.xpath(".//a[@class='nbg']/img/@src")[0]
31     item["comment_num"] = table.xpath(".//span[@class='pl']/text()")[0]
32     item["rating_num"] = table.xpath(".//span[@class='rating_nums']/text()")[0]
33     print(item)
34     

运行效果:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档