hhhhh开心,搞了一整天,查了不少python基础资料,终于完成了第一个最简单的爬虫:爬取了豆瓣top250电影的名字、评分、评分人数以及短评。

代码实现如下:#第一个最简单的爬虫

#爬取了豆瓣top250电影的名字、评分、评分人数以及短评

#观察豆瓣电影top250的网页可以发现:

#电影信息在一个ol标签之内,该标签的class属性值为grid_view

#1.电影的信息都在一个li标签里

#2.电影的电影名称在:第一个class属性值为hd的div标签下的 第一个 class属性值为title 的span标签里

#3.电影的评分在对应li标签里一个class属性值为rating_num 的span标签里

#4.电影的评价人数在 对应li标签 里的一个 class属性值为star 的div标签中 的最后一个数字

#5.电影的短评在 对应li标签 里的一个class属性值为inq的span标签里

#6.除第一页外,其他页的url:https://movie.douban.com/top250?start=X&filter= X的值为25-225的等差数列,差为25

from lxml import etree

import requests

import re

def get_info(url):

movie_info = ''

#通过get访问页面

html = requests.get(url)

selector = etree.HTML(html.text)

content = selector.xpath('//ol[@class="grid_view"]/li')

#第一个for循环抓取一整页的数据

for r in content:

#抓取电影的名字

movie_name = r.xpath('./div[@class="item"]/div[@class="info"]/div[@class="hd"]/a/span[@class="title"][1]/text()')[0]

#抓取电影评分

movie_score = r.xpath('./div[@class="item"]/div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[0]

#抓取电影评分人数

people_num = r.xpath('./div[@class="item"]/div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[last()]/text()')[0]

#抓取点评短评,这里使用try...except是因为遇到了几部电影没有短评!!!会报IndexError的错误,这样规避一下

try:

movie_quote = r.xpath('./div[@class="item"]/div[@class="info"]/div[@class="bd"]/p[@class="quote"]/span[@class="inq"]/text()')[0]

except IndexError:

print('这部电影没有短评:', movie_name)

movie_quote = ''

finally:

movie_info = movie_info + movie_name + '' + movie_score + '' + people_num + '' + '短评:' + movie_quote + '\n'

return movie_info

#这个函数用来把信息存储到文件

def save_info(movie_info):

#'a+':文件指针将会放在文件的结尾,是追加模式。

#此处注意要使用utf-8,否则会报错:'gbk' codec can’t encode character –> 说明是将Unicode字符编码为GBK时候出现的问题;

#往往最大的可能就是,本身Unicode类型的字符中,包含了一些无法转换为GBK编码的一些字符。

with open('movie_info.txt', 'a+',encoding='utf-8') as f:

f.write(movie_info)

if __name__ == "__main__":

i = 25

url_1 = 'https://movie.douban.com/top250'

first_page_info = get_info(url_1)

save_info(first_page_info)

while True:

if i > 225:

break

url_2 = 'https://movie.douban.com/top250?start={}&filter='.format(i)

other_page_info = get_info(url_2)

save_info(other_page_info)

i = i + 25

说几点遇到的坑,具体都在代码注释的地方标明了:

1. 有些电影没有豆瓣短评!!代码中:movie_quote = r.xpath('./div[@class="item"]/div[@class="info"]/div[@class="bd"]/p[@class="quote"]/span[@class="inq"]/text()')[0]

这句会报出IndexError的错误,使用try...except做出规避

2.有些电影信息在进行编码时会报错:

UnicodeEncodeError: 'gbk' codec can't encode character '\u22ef' in position 775: illegal multibyte sequence

是将Unicode字符编码为GBK时候出现的问题:往往最大的可能就是,本身Unicode类型的字符中,包含了一些无法转换为GBK编码的一些字符。

在open文件时,加上编码格式解决:

open('movie_info.txt', 'a+',encoding='utf-8')

第一次爬虫还比较简陋,后续会加上多线程、post、尝试抓取图片、尝试使用scrapy。

python爬虫爬取豆瓣电影信息城市_python爬虫,爬取豆瓣电影信息相关推荐

  1. python爬虫爬取豆瓣电影信息城市_Python爬虫入门 | 2 爬取豆瓣电影信息

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  2. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

  3. Python爬取马蜂窝-推荐小众城市旅游及爬取某一城市的景点信息和游记信息

    目的: 推荐小众城市旅游及爬取某一城市的景点信息和游记信息. 第一部分 首先从目的地页面获得各省专属5位数字编号,之后进入各省城市列表获得热门城市专属5位数字编号. 1.获得直辖市编号和热门省编号,h ...

  4. python爬虫scrapy爬取新闻标题及链接_python爬虫框架scrapy爬取梅花网资讯信息

    原标题:python爬虫框架scrapy爬取梅花网资讯信息 一.介绍 本例子用scrapy-splash爬取梅花网(http://www.meihua.info/a/list/today)的资讯信息, ...

  5. python爬取新浪新闻首页_Python爬虫学习:微信、知乎、新浪等主流网站的模拟登陆爬取方法...

    微信.知乎.新浪等主流网站的模拟登陆爬取方法 摘要:微信.知乎.新浪等主流网站的模拟登陆爬取方法. 网络上有形形色色的网站,不同类型的网站爬虫策略不同,难易程度也不一样.从是否需要登陆这方面来说,一些 ...

  6. beautifulsoup爬取网页中的表格_Python爬虫爬取BT之家找电影资源

    一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在 ...

  7. python爬取去哪网数据_Python爬虫入门:使用Python爬取网络数据

    1 网络爬虫 引用百度百科的定义:网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 简单的说,就是有一个程序可以自动去访问网页. 2 Python爬虫 如何实现爬虫? 简单的讲,一共 ...

  8. python爬虫开发与项目实战pdf下载_python爬虫开发与项目实战PDF高清文档下载

    随着大数据时代到来,网络信息量也变得更多更大,基于传统搜索引擎的局限性,网络爬虫应运而生,本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言和Web前端基础知识引领读者入门,之后介绍动态爬虫原 ...

  9. python 取模是什么意思_Python 中负数取模问题

    起步 应该很少人遇到或者注意到,Python 在某些情况取模会不一样. 10 % -3,python 和 js 出来的结果不一样.我试着更多语言的结果,包括php和c在内的结果都是 1: Python ...

最新文章

  1. python电脑发音-Python如何实现文本转语音
  2. WebSocket webshop后台服务器的一些全局数据结构
  3. [转]Ubuntu远程桌面登陆
  4. 分布式技术一周技术动态 2016.07.10
  5. Python多线程下实现单例模式,以及limit实例模式
  6. vscode 不展示文档注释内容_文本框这样用,实现文档不同板块内容高效联动,你还不知道吧...
  7. js中src赋值理解
  8. Linux内核启动:setup_arch
  9. 在centos下安装django
  10. AxureRP7.0基础教程系列 部件详解Text Area 文本段落
  11. 【软件工程大作业】软件项目管理之成本管理
  12. 相机打开显示服务器错误,Win10相机打不开报错“0xa00f4244”怎么解决?
  13. MediaFoundation视频采集
  14. PS图层蒙版应用——图片抠字
  15. IE浏览器无法打开HTTPS解决办法
  16. 常用矩阵向量求导公式
  17. 怎么让python一直执行_怎么才能让Python多进程不间断执行任务
  18. 文件下载和二进制文件(图片、mp4视频)预览响应头的设置(防止中文名名乱码)
  19. 【等保小知识】安全等保是什么意思?是ccrc吗?
  20. 大厂程序员推荐的linux内核学习路线

热门文章

  1. 北京大学计算机801,【盛世清北】2021北京大学801计算机专业基础考研笔记
  2. uni-app(二)
  3. 【论文解读 ASONAM 2019】Semi-Supervised Learning and Graph Neural Networks for Fake News Detection
  4. matlab模拟换相过程,换相过程可视化,visualization of the HVDC commutation process,音标,读音,翻译,英文例句,英语词典...
  5. Dcat Admin + 七牛云上传
  6. 支付宝支付(1) 电脑网站支付(SpringBoot+沙箱环境)
  7. 电视台搞的知识竞赛原来都用了这些软件硬件设备
  8. Ubuntu 18.04百度拼音输入法突然乱码问题
  9. z17刷机miui12教程_努比亚Z17刷机教程_Nubia Z17卡刷升级更新官方系统包
  10. navigation导航栈