爬取豆瓣电影Top250和和豆瓣图书

豆瓣电影top250url:https://movie.douban.com/top250?start=0&filter=

首先f12进入检查CTRL +shift +c定位到标题

可以看到电影标题在<a>标签下,所以我们只要定位到a标签下就可以了,我们找到<a>标签的最上一级标签<div>标签属性class=item,好了现在我们大概有了思路了,现在让我来写代码吧

第一步:设置请求头headers

headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69‘}

然后我们发送get请求,并用BeautifulSoup解析

1 html = requests.get(url,headers=headers)
2 soup = BeautifulSoup(html.text,‘lxml‘)

这了我们用BeautifulSoup的select方法

movies = soup.select(‘.item‘)

这样我们就定位到了div标签,我们创建一个迭代对象一步一步向下定位,定位到我们需要的内容

1     for movie in movies:
2         movie_name = movie.select_one(‘div.info a‘).text.strip().replace(‘ ‘,‘‘).replace(‘\n‘,‘‘)
3         movie_star = movie.select_one(‘div.star‘).text.strip()
4         movie_quote = movie.select_one(‘p.quote‘).text.strip()
5         print(movie_name,movie_star[0:3])
6         print(movie_quote,‘\n‘,‘-‘*80)

其实现在代码已经可以运行了,但是我们只能获取到第一页的内容,如果我们想自动翻页获取怎么办呢

我们点击第二页,查看第二页的url:https://movie.douban.com/top250?start=25&filter=,查看第三页url:https://movie.douban.com/top250?start=50&filter=我们可以发现一个规律

就是翻页其实只带来了url中start=_x_这个数字的改变,所以我们只要写一个for循环每次改变这个数字就可以实现url的改变

现在我们运行代码数据被成功的被爬取了下来

完整代码如下:

 1 import requests
 2 from bs4 import BeautifulSoup
 3
 4 def get_movies(url):
 5     headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69‘}
 6     html = requests.get(url,headers=headers)
 7     soup = BeautifulSoup(html.text,‘lxml‘)
 8     movies = soup.select(‘.item‘)
 9     for movie in movies:
10         movie_name = movie.select_one(‘div.info a‘).text.strip().replace(‘ ‘,‘‘).replace(‘\n‘,‘‘)
11         movie_star = movie.select_one(‘div.star‘).text.strip()
12         movie_quote = movie.select_one(‘p.quote‘).text.strip()
13         print(movie_name,movie_star[0:3])
14         print(movie_quote,‘\n‘,‘-‘*80)
15
16 if __name__ == ‘__main__‘:
17     for each in range(0,100,25):
18         url = ‘https://movie.douban.com/top250?start={}&filter=‘.format(each)
19         get_movies(url)

当我们会爬取豆瓣电影后其他的类似网站我们同样可以爬取:这里我们再把豆瓣书籍爬取一边:

爬取豆瓣读书的完整代码如下:

方法和上面是一样的,先用get请求获取网页源码,再用BeautifulSoup解析,然后用select方法迭代

 1 import requests,time
 2 from bs4 import BeautifulSoup
 3 from urllib import parse
 4 headers = {
 5     ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69‘
 6 }
 7 def get_html(url):
 8     html = requests.get(url,headers=headers)
 9     soup = BeautifulSoup(html.text,‘lxml‘)
10     books = soup.select(‘li.subject-item‘)
11     for book in books:
12         title = book.select_one(‘div.info h2 a‘).text.strip().replace(‘\n‘,‘‘).replace(‘ ‘,‘‘)
13         pub = book.select_one(‘div.pub‘).text.strip().replace(‘\n‘,‘‘)
14         shuping = book.select_one(‘p‘).text
15         ratingnum = book.select_one(‘.rating_nums‘).text
16         print(‘《‘,title,‘》‘,pub,"评分",ratingnum,"分")
17         print(shuping)
18         print(‘-‘*80)
19
20
21 if __name__ == ‘__main__‘:
22     for each in range(0,100,20):
23         url = ‘https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start={}&type=T‘.format(each)
24         print(‘正在爬取第{}‘.format((each//20+1)))
25         get_html(url)

原文地址:https://www.cnblogs.com/Truedragon/p/12584315.html

时间: 2024-10-03 13:38:59

爬取豆瓣电影Top250和和豆瓣图书的相关文章

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

一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了,接下来就使用我们python强大的request库先获取网页内容下来吧!获取内容后,再使用一个好用的lxml库来分析网页内容,然后获取我们的内容就可以做下一步操作了.先贴出使用request库和lxml分析的代码 1 def get_page(i): 2 url = 'https://movie.d

scrapy爬取豆瓣电影top250

1 # -*- coding: utf-8 -*- 2 # scrapy爬取豆瓣电影top250 3 4 import scrapy 5 from douban.items import DoubanItem 6 7 8 class DoubanspiderSpider(scrapy.Spider): 9 name = "doubanspider" 10 # allowed_domains = ["movie.douban.com/top250"]注意这里的主页限制

运维学python之爬虫高级篇(五)scrapy爬取豆瓣电影TOP250

对于scrapy我们前面已经介绍了简单的应用,今天我们用一个完整的例子,爬取豆瓣电影TOP250来做一个小的练习,把scrapy阶段做一个总结. 1 环境配置 语言:Python 3.6.1 IDE: Pycharm 浏览器:firefox 爬虫框架:Scrapy 1.5.0 操作系统:Windows 10 家庭中文版 2 爬取前分析 2.1 需要保存的数据 首先确定我们要获取的内容,在items中定义字段,来将非结构化数据生成结构化数据,获取的内容主要包括:排名.电影名称.得分.评论人数.如下

03_使用scrapy框架爬取豆瓣电影TOP250

前言: 本次项目是使用scrapy框架,爬取豆瓣电影TOP250的相关信息.其中涉及到代理IP,随机UA代理,最后将得到的数据保存到mongoDB中.本次爬取的内容实则不难.主要是熟悉scrapy相关命令以及理解框架各部分的作用. 1.本次目标 爬取豆瓣电影TOP250的信息,将得到的数据保存到mongoDB中. 2.准备工作 需要安装好scrapy以及mongoDB,安装步骤这里不做赘述.(这里最好是先了解scrapy框架各个部分的基本作用和基础知识,这样方便后面的内容的理解.scrapy文档

利用selenium爬取豆瓣电影Top250

这几天在学习selenium,顺便用selenium + python写了一个比较简陋的爬虫,现附上源码,有时间再补充补充: 1 from selenium import webdriver 2 from selenium.webdriver.support.wait import WebDriverWait 3 from selenium.webdriver.support import expected_conditions as EC 4 from selenium.webdriver.c

Python小爬虫——抓取豆瓣电影Top250数据

写LeetCode太累了,偶尔练习一下Python,写个小爬虫玩一玩~ 确定URL格式 先找到豆瓣电影TOP250任意一页URL地址的格式,如第一页为:https://movie.douban.com/top250?start=0&filter=,分析该地址: https:// 代表资源传输协议使用https协议: movie.douban.com/top250 是豆瓣的二级域名,指向豆瓣服务器: /top250 是服务器的某个资源: start=0&filter= 是该URL的两个参数,

Node.js学习 爬虫下载豆瓣电影top250图片

利用node.js实现爬虫,并且爬取豆瓣电影top250的列表和图片. 1 什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎 2 什么是爬虫 (又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 3

python爬虫练习1:豆瓣电影TOP250

项目1:实现豆瓣电影TOP250标题爬取: 1 from urllib.request import urlopen 2 from bs4 import BeautifulSoup 3 import re 4 5 class doubanSpider(): 6 def __init__(self): 7 """ 8 初始化, 9 页码,URL,存储数据, 10 """ 11 self.page = 0; 12 # "http://mov

[感想]Web crawler with Python - 03.豆瓣电影TOP250

按照大牛的步骤简单地爬了豆瓣电影top250.过程感想记录一下. 教程链接:在这里 爬虫写完以后,一直出现错误 AttributeError: 'NoneType' object has no attribute 'find' #'nonetype'的对象没有属性发现 出错原因:调用对象是个None,然后调用出错.出错行原本是在第10页没有下一页的链接时候,判断soup.find('span', attrs={'class', 'next'}).find('a')  这句话的结果来选择返回结果,