对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务。

1、urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的。安装方式:pip install beautifulsoup4

其官方文档中文版地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html

2、爬取任务:爬取的内容为每部电影的名字 导演 主演 年代 国家 类型 评分 评分人数

3、展示方法:(1)、直接打印 (2)、存到Mysql数据库

4、分析:

 网站布局:1、Top250共10页  每页25部电影  网站格式:https://movie.douban.com/top250?start=[0,25,50,75,100,125,150,175,200,225] 每一个数字代表一行
对其中一部电影进行分析:
<div class="hd">

                           <a href="https://movie.douban.com/subject/1292052/" class="">
<span class="title">肖申克的救赎</span>
<span class="title"> / The Shawshank Redemption</span>
<span class="other"> / 月黑高飞(港) / 刺激1995(台)</span>
</a><span class="playable">[可播放]</span>
</div>
<div class="bd">
<p class="">
导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins /...<br>
1994 / 美国 / 犯罪 剧情
</p> <div class="star">
<span class="rating5-t"></span>
<span class="rating_num" property="v:average">9.6</span>
<span property="v:best" content="10.0"></span>
<span>765942人评价</span>
</div> <p class="quote">
<span class="inq">希望让人自由。</span>
</p>
</div>

主要部分在 div class='article'下的 ol class='grid_view'中的 li里面。各个信息都可以在这里面找到。

《一》利用BeautifulSoup的find函数,可以轻松的实现打印功能,保存到本地csv中:

代码如下:

#-*- encoding:utf-8 -*-
from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib.error import HTTPError
import re
import csv
####本程序为爬取豆瓣电影Top250 ,先放在本地txt文档中,后续放到Mysql中
####本程序为bs4,后续改为Scrapy
###爬取的内容为每部电影的名字 导演 主演 年代 国家 类型 评分 评分人数 。。。 """分析部分: 网站布局:1、Top250共10页 每页25部电影 网站格式:https://movie.douban.com/top250?start= """ def crawl(baseurl,bias):
try:
html=urlopen(baseurl+'?start=%d' %bias)
except HTTPError:
return None
bsObj=BeautifulSoup(html,'lxml')
totalContent=bsObj.find('ol',{'class':'grid_view'}).findAll('li')###每一页25个电影的全部信息
retList=[]
for eachMovie in totalContent:
rank=eachMovie.em.get_text() ###获取排名
href=eachMovie.a['href'] ####获取到连接地址
nameList=eachMovie.find_all('span',{'class':'title'})
Chinesename=nameList[0].get_text() ### 中文名字
if(len(nameList)==2):
Englishname=nameList[1].get_text() ##英文名字
else:
Englishname="None"
othername=eachMovie.find('span',{'class':'other'}).get_text().replace('/','')
relate=eachMovie.find('p',{'class':''}).get_text().replace(' ','') ###主演,导演等信息 需要分割处理
rating=eachMovie.find('span',{'class':'rating_num','property':'v:average'}).get_text() ##评分
starDiv=eachMovie.find('div',{'class':'star'})
ratingN=starDiv.find_all('span')[3].get_text()
ratingNum=re.split(r"\D",ratingN)[0] ####评价的人数
try:
abstract=eachMovie.find('span',{'class':'inq'}).get_text()
except AttributeError:
abstract="None"
OutputStr="排名: "+rank+'\t网址: '+href+'\t中文名: '+Chinesename+'\t英文名: '+Englishname+'\t别名: '+othername+\
'\t评分: '+rating+'\t评价人数: '+ratingNum+'\t摘要: '+abstract+"\t"+'相关信息:'+relate
print(OutputStr)
eachList=[rank,href,Chinesename,Englishname,othername,rating,ratingNum,abstract,relate]
retList.append(eachList)
return retList
def storeToCsv(AttributeList):
csvFile=open('res.csv','a+',encoding='utf-8')
try:
writer=csv.writer(csvFile)
writer.writerow(('排名',"网址",'中文名','英文名','别名','评分','评价人数','摘要','相关信息'))
for i in range(10):
for j in range(25):
writer.writerow(AttributeList[i][j])
finally:
csvFile.close() if __name__=='__main__':
url='https://movie.douban.com/top250'
biasList=[0,25,50,75,100,125,150,175,200,225]
allList=[]
for eachBias in biasList:
s=crawl(url,eachBias)
allList.append(s)
storeToCsv(allList)
 运行结果如下图:
 

urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250的更多相关文章

  1. python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库

    python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...

  2. 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用

    学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...

  3. python 爬虫&爬取豆瓣电影top250

    爬取豆瓣电影top250from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法requestfrom lxml impor ...

  4. Python爬虫入门:爬取豆瓣电影TOP250

    一个很简单的爬虫. 从这里学习的,解释的挺好的:https://xlzd.me/2015/12/16/python-crawler-03 分享写这个代码用到了的学习的链接: BeautifulSoup ...

  5. scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250

    scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...

  6. scrapy爬取豆瓣电影top250

    # -*- coding: utf-8 -*- # scrapy爬取豆瓣电影top250 import scrapy from douban.items import DoubanItem class ...

  7. 【转】爬取豆瓣电影top250提取电影分类进行数据分析

    一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了, ...

  8. Scrapy中用xpath/css爬取豆瓣电影Top250:解决403HTTP status code is not handled or not allowed

    好吧,我又开始折腾豆瓣电影top250了,只是想试试各种方法,看看哪一种的方法效率是最好的,一直进行到这一步才知道 scrapy的强大,尤其是和selector结合之后,速度飞起.... 下面我就采用 ...

  9. Scrapy爬虫(4)爬取豆瓣电影Top250图片

      在用Python的urllib和BeautifulSoup写过了很多爬虫之后,本人决定尝试著名的Python爬虫框架--Scrapy.   本次分享将详细讲述如何利用Scrapy来下载豆瓣电影To ...

随机推荐

  1. C++的STL

    今天,看一段代码的时候发现只一句话就做了个排序,是这样的: sort(rotateArray.begin(),rotateArray.end()); 很震惊,后来查了一下sort的用法, sort函数 ...

  2. 第五章 搭建S3C6410开发板的测试环境

    在PC上可以开发Linux驱动,重新编译成ARM架构的Linux驱动模块,但最后还是要在开发板上进行测试.目前最流行的是基于三星S3C6410 ARM11架构的开发板,很多厂商在其基础上进行了扩展,开 ...

  3. 安全协议系列(四)----SSL与TLS

    当今社会,电子商务大行其道,作为网络安全 infrastructure 之一的 -- SSL/TLS 协议的重要性已不用多说.OpenSSL 则是基于该协议的目前应用最广泛的开源实现,其影响之大,以至 ...

  4. Python学习之运算符

    Python运算符 算术运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 取模 ** 幂 // 整除 比较运算符 运算符 描述 == 等于 != 不等于 <> 不等于 &g ...

  5. nexus7 一代 手动刷4.4.4

    跟上一篇类似,但是中间出了点问题,提示说command write 出错,最后解决方法是电脑上换了个usb口插入....

  6. CRYPTO-MD5

    这是昨天WHUCTF比赛的一道题目,本属于crypto,其实和crypto没多大关系, 比赛时其实差不多有这种思路了,但不相信自己,就没这样做下去,回来之后,照做了,果然是这样 链接:http://p ...

  7. HDU 5113 dfs剪枝

    题意:告诉格子规格,颜色个数,以及每个颜色能涂得格子数目,问是否能够实现相邻两个格子的颜色数目不相同. 分析:因为数据很小,格子最多是5 * 5大小的,因此可以dfs.TLE了一次之后开始剪枝,31m ...

  8. Android通过webservice连接SQLServer 详细教程(数据库+服务器+客户端)

    http://blog.csdn.net/zhyl8157121/article/details/8169172 目录(?)[-] 项目说明 开发环境的部署 数据库设计 服务器端程序设计Webserv ...

  9. 关于javascript自定义对象(来自网络)(最近几天不会的)

    javascript定义对象的几种简单方法 1.构造函数方式,全部属性及对象的方法都放在构造方法里面定义 优点:动态的传递参数 缺点:每创建一个对象就会创建相同的方法函数对象,占用大量内存 funct ...

  10. QT显示歌词渐变

    central = new QWidget(this); setCentralWidget(central); central->setAutoFillBackground(true); cen ...