python3爬虫豆瓣_python3 爬虫---爬取豆瓣电影TOP250

分析网址'?'符号后的参数,第一个参数'start=0',这个代表页数,‘=0’时代表第一页,‘=25’代表第二页。。。以此类推

一、分析网页:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjIzMzc5LzIwMTcxMi8xMjIzMzc5LTIwMTcxMjE5MjAyOTAxMzAzLTE3Mzg2OTA0OTgucG5n.jpg

明确要爬取的元素 :排名、名字、导演、评语、评分,在这里利用Chrome浏览器,查看元素的所在位置

每一部电影信息都在

当中

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjIzMzc5LzIwMTcxMi8xMjIzMzc5LTIwMTcxMjE5MjAzODI5MTc4LTE3MTU5MTUwNDkucG5n.jpg

爬取元素的所在位置

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjIzMzc5LzIwMTcxMi8xMjIzMzc5LTIwMTcxMjE5MjA1MTIyNTUzLTE3MDY1OTc2My5wbmc=.jpg

分析完要爬取的元素,开始准备爬取的工作

二、爬取部分:

工具:

Python3

requests

BeautifulSoup

1、获取每一部电影的信息

def get_html(web_url): # 爬虫获取网页没啥好说的

header = {

"User-Agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16"}

html = requests.get(url=web_url, headers=header).text#不加text返回的是response,加了返回的是字符串

Soup = BeautifulSoup(html, "lxml")

data = Soup.find("ol").find_all("li") # 还是有一点要说,就是返回的信息最好只有你需要的那部分,所以这里进行了筛选

return data

requests.get()函数,会根据参数中url的链接,返回response对象

.text会将response对象转换成str类型

find_all()函数,会将html文本中的ol标签下的每一个li标签中的内容筛选出来

2、筛选出信息,保存进文本

def get_info(all_move):

f = open("F:\\Pythontest1\\douban.txt", "a")

for info in all_move:

# 排名

nums = info.find('em')

num = nums.get_text()

# 名字

names = info.find("span") # 名字比较简单 直接获取第一个span就是

name = names.get_text()

# 导演

charactors = info.find("p") # 这段信息中有太多非法符号你需要替换掉

charactor = charactors.get_text().replace(" ", "").replace("\n", "") # 使信息排列规律

charactor = charactor.replace("\xa0", "").replace("\xee", "").replace("\xf6", "").replace("\u0161", "").replace(

"\xf4", "").replace("\xfb", "").replace("\u2027", "").replace("\xe5", "")

# 评语

remarks = info.find_all("span", {"class": "inq"})

if remarks: # 这个判断是因为有的电影没有评语,你需要做判断

remark = remarks[0].get_text().replace("\u22ef", "")

else:

remark = "此影片没有评价"

print(remarks)

# 评分

scores = info.find_all("span", {"class": "rating_num"})

score = scores[0].get_text()

f.write(num + '、')

f.write(name + "\n")

f.write(charactor + "\n")

f.write(remark + "\n")

f.write(score)

f.write("\n\n")

f.close() # 记得关闭文件

注意爬取元素的时候,会有非法符号(因为这些符号的存在,会影响你写入文本中),所以需要将符号用replace函数替换

其余的部分就不做解释了~~

3、全部代码

from bs4 import BeautifulSoup

import requests

import os

def get_html(web_url): # 爬虫获取网页没啥好说的

header = {

"User-Agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16"}

html = requests.get(url=web_url, headers=header).text#不加text返回的是response,加了返回的是字符串

Soup = BeautifulSoup(html, "lxml")

data = Soup.find("ol").find_all("li") # 还是有一点要说,就是返回的信息最好只有你需要的那部分,所以这里进行了筛选

return data

def get_info(all_move):

f = open("F:\\Pythontest1\\douban.txt", "a")

for info in all_move:

# 排名

nums = info.find('em')

num = nums.get_text()

# 名字

names = info.find("span") # 名字比较简单 直接获取第一个span就是

name = names.get_text()

# 导演

charactors = info.find("p") # 这段信息中有太多非法符号你需要替换掉

charactor = charactors.get_text().replace(" ", "").replace("\n", "") # 使信息排列规律

charactor = charactor.replace("\xa0", "").replace("\xee", "").replace("\xf6", "").replace("\u0161", "").replace(

"\xf4", "").replace("\xfb", "").replace("\u2027", "").replace("\xe5", "")

# 评语

remarks = info.find_all("span", {"class": "inq"})

if remarks: # 这个判断是因为有的电影没有评语,你需要做判断

remark = remarks[0].get_text().replace("\u22ef", "")

else:

remark = "此影片没有评价"

print(remarks)

# 评分

scores = info.find_all("span", {"class": "rating_num"})

score = scores[0].get_text()

f.write(num + '、')

f.write(name + "\n")

f.write(charactor + "\n")

f.write(remark + "\n")

f.write(score)

f.write("\n\n")

f.close() # 记得关闭文件

if __name__ == "__main__":

if os.path.exists("F:\\Pythontest1") == False: # 两个if来判断是否文件路径存在 新建文件夹 删除文件

os.mkdir("F:\\Pythontest1")

if os.path.exists("F:\\Pythontest1\\douban.txt") == True:

os.remove("F:\\Pythontest1\\douban.txt")

page = 0 # 初始化页数,TOP一共有250部 每页25部

while page <= 225:

web_url = "https://movie.douban.com/top250?start=%s&filter=" % page

all_move = get_html(web_url) # 返回每一页的网页

get_info(all_move) # 匹配对应信息存入本地

page += 25

python 爬虫&amp&semi;爬取豆瓣电影top250

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

&lbrack;151116 记录&rsqb; 使用Python3&period;5爬取豆瓣电影Top250

这一段时间,一直在折腾Python爬虫.已有的文件记录显示,折腾爬虫大概个把月了吧.但是断断续续,一会儿鼓捣python.一会学习sql儿.一会调试OpenCV,结果什么都没学好.前几天,终于耐下心来 ...

Python爬虫-爬取豆瓣电影Top250

#!usr/bin/env python3 # -*- coding:utf-8-*- import requests from bs4 import BeautifulSoup import re ...

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

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

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

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

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

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

urllib&plus;BeautifulSoup无登录模式爬取豆瓣电影Top250

对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...

python爬虫 Scrapy2-- 爬取豆瓣电影TOP250

sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

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

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

随机推荐

java攻城狮之路&lpar;Android篇&rpar;--MP3 MP4、拍照、国际化、样式主题、图片移动和缩放

一.MP3播放器 查看Android API文档可以看到MediaPlayer状态转换图: 练习: package com.shellway.mp3player; import java.io.Fil ...

Fiddler-008-简单模拟性能测试

通过 Fiddler 可以简单的模拟性能测试的并发测试,此方法非常的简单,直接讲述如何使用,敬请参阅! 首先我们要获取需要并发的 HTTP请求,此操作非常简单,则在此不再赘述.获取到响应的 HTTP请 ...

云计算中iaas、paas、saas的区别和联系

概念: iass : Infrastructure(基础设施)-as-a-Service, paas : Platform(平台)-as-a-Service, saas : Software(软件)- ...

HeadFirst Jsp 06 &lpar;会话管理&rpar;

现在我们希望能够跨多个请求保留客户特定的状态. 现在, 模型中的业务只是检查请求中的参数, 并返回一个响应(建议), 应用中没有谁记得在当前请求之前与这个客户之间发生过什么. 与一个客户的整个会话期间 ...

&lbrack;学习笔记&rsqb;设计模式之Proxy

为方便读者,本文已添加至索引: 设计模式 学习笔记索引 写在前面 “魔镜啊魔镜,谁是这个世界上最美丽的人?” 每到晚上,女王都会问魔镜相同的问题(见Decorator模式).这是她还曾身为女巫时留下的 ...

tag cloud的相关资料

http://reverland.org/python/2013/01/28/visualize-your-shell-history/ https://github.com/reverland/sc ...

【Linux基础】Linux下软件包管理(rpm-deb-yast-yum)

软件包管理是指系统中一种安装和维护软件的方法.通常软件以包的形式存储在仓库(repository)中,能满足许多人所有需要的软件. 在GNU/Linux(以下简称Linux)操作系统中,RPM和DPK ...

vue中key的作用 v-for里警告 v-if的复用

vue总是会复用页面上已经存在的dom,区别的方法是加上key就可以,还设有v-for时候的警告也是如此key的作用是区别这条跟那条的.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值