爬取目标
爬取豆瓣TOP250电影的评分、评价人数、短评等信息,并在其保存在sql数据库中。

最终实现效果如图:

确定爬取的URL
爬取的网页地址为:https://movie.douban.com/top250

打开网页后,可观察到:TOP250的电影被分成了10个页面来展示,每个页面有25个电影。

那么要爬取所有电影的信息,就需要知道另外9个页面的URL链接。

观察发现:
第2个页面的URL链接为:

第三个页面的URL链接为:

第4个URL链接为:

剩余的以此类推。

因此,出了第一个页面的链接是:https://movie.douban.com/top250外,其他页面的链接都是由相同的规律的。

观察网页源代码规律
以https://movie.douban.com/top250为例

python实现:

!/usr/bin/env python
--coding: utf-8--
import requests
from lxml import etree
import MySQLdb

# 使用requests方法后,会返回一个response对象,其存储了服务器响应的内容,如上实例中已经提到的 r.text、r.status_code……
#Python 标准库中自带了 xml 模块,但是性能不够好,而且缺乏一些人性化的 API,相比之下,第三方库 lxml 是用 Cython 实现的,
# 而且增加了很多实用的功能,可谓爬虫处理网页数据的一件利器。lxml 大部分功能都存在
#lxml 还支持几个函数 find/findall,他们使用 ElementPath,是一种类似 xpath 的语言
#安装命令
#pip install requests
#pip install lxml,pip2~~~~~

def get_url(url):
url=url
headers={
‘User-Agent’:’Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36’}
#user-Agent是浏览器标识的意思,如果您ua设为无,网页会认为是一个未知设备在请求访问,
html=requests.get(url,headers=headers) # 将源码转化为能被XPath匹配的格式
selector=etree.HTML(html.text)

# 这里使用//从全文中定位符合条件的a标签,使用“@标签属性”获取a标签的href属性值
hrefs=selector.xpath(‘//[@id=”content”]/div/div[1]/div[2]/a/@href’)
hrefs.insert(0, ”)
for href in hrefs:
string=url+href
print(string+”\n”)
j = [0];j[0] += 2
def get_string(string):
headers={
‘User-Agent’:’Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36’}
html=requests.get(string,headers=headers)
selector=etree.HTML(html.text)

# XPATH基本上是用一种类似目录树的方法来描述在XML文档中的路径。比如用“ / ”来作为上下层级间的分隔。第一个“ / ”表示文档的根节点(注意,不是指文档最外层的tag节点,而是指文档本身)。
# 比如对于一个HTML文件来说,最外层的节点应该是 “/html”。

names=selector.xpath(‘//*[@id=”content”]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()’)
others=selector.xpath(‘//*[@id=”content”]/div/div[1]/ol/li/div/div[2]/div[2]/p[1]/text()’)
nums=selector.xpath(‘//*[@id=”content”]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()’)
evaluates=selector.xpath(‘//*[@id=”content”]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[4]/text()’)
briefs=selector.xpath(‘//*[@id=”content”]/div/div[1]/ol/li/div/div[2]/div[2]/p[2]/span/text()’)
while j[0] <= 25:
temp = selector.xpath(
‘//*[@id=”content”]/div/div[1]/ol/li[’ + str(j[0]) + ‘]/div/div[2]/div[2]/p[2]/span/text()’)
if len(temp) == 0:
temp = ‘null’ # 因为某些电影没有brief,如247,所以用N来代替,
for h in temp:
briefs.insert(j[0], h)
j[0] += 1
# 以上七行代码处理有些没有brief的情况
for name,other,num,evaluate,brief in zip(names,others,nums,evaluates,briefs):
#print(name)
#print(other)
# print(num)
#print(evaluate)
#print(brief)
#以下是插入数据库的代码
db = MySQLdb.connect(“localhost”, “root”, “1234”, “dh”, charset=”utf8”)
cursor = db.cursor() #获得python执行Mysql命令的方法,操作游标
sql = “insert into douban (name,other,num,evaluate,brief) values (‘%s’,’%s’,’%s’,’%s’,’%s’)” % (name, other, num, evaluate,brief.replace(‘\”,”))
#在抓第120个电影时,出错,出现特殊字符,解决方法replace(‘\”,”)
cursor.execute(sql)
db.commit()
db.close()
#以上是插入数据库的代码
get_string(string)
get_url(‘https://movie.douban.com/top250‘)
# for循环的zip使用:例如,有两个列表:
# a = [1,2,3]
# b = [4,5,6]
# 使用zip()函数来可以把列表合并,并创建一个元组对的列表。
# zip(a,b)
# [(1, 4), (2, 5), (3, 6)]

格式看下面的图片
注意:
添加输出查看url是否全部在


所以添加一个代码

测试

再实现之前请安装python,mysql,详情查看百度
如果没有mysql,可以将
for name,other,num,evaluate,brief in zip(names,others,nums,evaluates,briefs): 下面的print(name)等一些元素解开注释,再注释关于插入数据库的代码

以上代码格式要求严格

爬取豆瓣TOP250电影的评分、评价人数、短评等信息,并在其保存在sql数据库中。相关推荐

  1. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  2. scrapy爬取豆瓣top250电影数据

    scrapy爬取豆瓣top250电影数据 scrapy框架 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. sc ...

  3. Python爬取豆瓣Top250电影中2000年后上映的影片信息

    Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...

  4. Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)

    Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...

  5. Python爬取豆瓣Top250电影可见资料并保存为excel形式

    Python爬取豆瓣Top250电影可见资料并保存为excel形式 利用requests第三方库实现网页的元素爬取,再使用openpyxl库进行信息的录入. 具体思路 1.分析网页的headers. ...

  6. 爬取豆瓣Top250电影

    爬取豆瓣Top250电影数据一直是爬虫小白的入门练手项目,下面就来分享一下自己的爬取过程. 开始之前,先简单写一下需求和实现思路. 需求: 爬取豆瓣电影Top250的数据,数据包含排名.电影名称.导演 ...

  7. python采用requests+bs4爬取豆瓣top250电影信息

    爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...

  8. 爬取豆瓣top250电影并分析

    爬取豆瓣top250电影,提取评论关键词,然后将同一国家的关键词做成一个词云,轮廓是每个国家的地图轮廓 爬取数据 需要爬取电影名称.导演.年份.地区和前10个评论除了地区,其他的都没什么问题,我们来研 ...

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

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

最新文章

  1. Flask框架-基本使用
  2. 连接redis的linux命令,redis常见操作命令
  3. ADO.net数据访问
  4. 一个重复try语句的实验
  5. ML_Random_Forests
  6. Golang 为什么不能直接将任意类型数组赋值给 []interface{}完成泛型操作
  7. 检查MySQL主从数据一致性
  8. JEECG v2.3 发布,基于代码生成器的智能开发框架
  9. 关于 IIS7.0下文件写入无权限的解决办法
  10. curl实现发送Get和Post请求(PHP)
  11. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_3_流式思想概述...
  12. Windows下的TFTP传输文件
  13. stm32指纹考勤机 (程序源码包括app程序+pcb电路图+原件清单)
  14. ubuntu 12.04中搭建nfs服务器
  15. 最新计算机专业毕业设计论文选题源码演示录像下载(开题报告任务书PPT毕业答辩模板jsp352 cs拼图游戏的设计与实现
  16. HBuilder没有显示表格边框
  17. Oracle 按日期分组
  18. Java多线程案例-Java多线程(3)
  19. 一款vista边栏Gadgets汉英翻译(翻译14种语言的边栏工具下载)
  20. 计算机实验报告word结果总结,计算机网络实验报告.doc

热门文章

  1. 给宽带加速,一分钟学会
  2. 尚观shell的学习
  3. 从面试官角度看iOSer应该如何面试
  4. 我开源了一个私人云盘——蓝眼云盘 1
  5. Python项目:分析优衣库产品销售数据
  6. 基于Springboot实现漫画网站平台
  7. 中后台学习笔记 – 数据权限
  8. smartgit 19.1版本需要许可证的解决办法
  9. 想学平面设计应该从哪开始入门
  10. 可在线看的视频没有下载选项怎么办?别怕,“黑科技”帮你!