Beautifulsoup网页解析——爬取豆瓣排行榜分类接口
我们在网页爬取的过程中,会通过requests成功的获取到所需要的信息,而且,在返回的网页信息中,也是通过HTML代码的形式进行展示的。HTML代码都是通过固定的标签组合来实现页面信息的展示,所以,最方便的做法就是依据标签来获取信息,所以我们提取信息也应该通过选择标签信息来获取我们需要的内容。
python的spider中提供了许多的网页解析的第三方库,而对于HTML的解析(也就是我们通常说的通过css选择器进行解析),bs4中的Beautifulsoup是很好的选择。
下面的代码实现了Beautifulsoup的基本实现方式
1 '''
2 @Description: Beautifulsoup网页解析(获取豆瓣电影分类排行榜)
3 @Version: 1.0
4 @Autor: Montoin Yan
5 @Date: 2020-02-06 19:36:54
6 @LastEditors : Montoin Yan
7 @LastEditTime : 2020-02-06 20:09:09
8 '''
9
10 import requests
11 import re
12 import lxml
13 import random
14 import bs4
15
16 Base_URL = 'http://movie.douban.com' #设置网页的根路径
17 CHART_URL = '{}/{}'.format(Base_URL,'chart') #拼接为网页的入口地址
18
19 def main(): #主函数
20 #设置多个请求头,防止被反扒措施进行拦截
21 ua_list = [
22 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0",
23 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.29 Safari/537.36",
24 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362",
25 "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400"
26 ]
27 #随机pick one
28 ua = random.choice(ua_list)
29 response = requests.get(CHART_URL,headers={
30 'User-agent':ua
31 })
32 response.encoding = 'UTF-8' #设置获取网页的编码
33 # print(response.text)
34 soup = bs4.BeautifulSoup(markup=response.text,features='lxml') #使用lxml进行解析处理,使用头两个参数,markup:表示需要解析的内容 features:表示进行解析的特定解析器或者标记的类型
35 typerank_list = soup.find_all('a',href = re.compile('^/typerank')) #获取豆瓣a标签下所有的href属性为typerank的内容(通过正则)
36 for t in typerank_list:
37 type_title = t.contents[0] #获取文字的分类标题
38 print('【%s】访问路径:%s' % (type_title,Base_URL+t['href'])) #将获取到的数据进行拼接
39
40
41 if __name__ == "__main__":
42 main()
执行的结果可以试一下情形:
可以知道我们通过程序入口进行了对HTML代码的解析能够获取到我们想要的完整信息,然后我们通过对解析结果的分析能够获取到我们需要的接口路径,当我们获得这些接口的完整路径的时候,我们就可以通过这些路径进行下一步的操作了。
Beautifulsoup网页解析——爬取豆瓣排行榜分类接口的更多相关文章
- urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250
对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...
- 爬虫之爬取豆瓣图书名字及ID
from urllib import request from bs4 import BeautifulSoup as bs #爬取豆瓣最受关注图书榜 resp = request.urlopen(' ...
- Python爬虫使用lxml模块爬取豆瓣读书排行榜并分析
上次使用了BeautifulSoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢.本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快. 本次爬取的豆瓣书籍排行榜的首页地 ...
- Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据
所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...
- 【转】爬取豆瓣电影top250提取电影分类进行数据分析
一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了, ...
- Python爬虫之利用BeautifulSoup爬取豆瓣小说(一)——设置代理IP
自己写了一个爬虫爬取豆瓣小说,后来为了应对请求不到数据,增加了请求的头部信息headers,为了应对豆瓣服务器的反爬虫机制:防止请求频率过快而造成“403 forbidden”,乃至封禁本机ip的情况 ...
- python爬取豆瓣电影Top250(附完整源代码)
初学爬虫,学习一下三方库的使用以及简单静态网页的分析.就跟着视频写了一个爬取豆瓣Top250排行榜的爬虫. 网页分析 我个人感觉写爬虫最重要的就是分析网页,找到网页的规律,找到自己需要内容所在的地方, ...
- 爬虫系列(十) 用requests和xpath爬取豆瓣电影
这篇文章我们将使用 requests 和 xpath 爬取豆瓣电影 Top250,下面先贴上最终的效果图: 1.网页分析 (1)分析 URL 规律 我们首先使用 Chrome 浏览器打开 豆瓣电影 T ...
- python爬虫08 | 你的第二个爬虫,要过年了,爬取豆瓣最受欢迎的250部电影慢慢看
马上就要过年啦 过年在家干啥咧 准备好被七大姑八大姨轮番「轰炸」了没? 你的内心 os 是这样的 但实际上你是这样的 应付完之后 闲暇时刻不妨看看电影 接下来咱们就来爬取豆瓣上评分最高的 250部电影 ...
随机推荐
- 机器学习PAL基本概念
机器学习PAL基本概念 本文介绍PAI-Studio.PAI-DSW及PAI-EAS的基本概念. PAI-Studio PAI-DSW PAI-EAS
- 重新整理 .net core 实践篇—————日志系统之服务与日志之间[十六]
前言 前文介绍了一些基本思路,那么这里介绍一下,服务如何与配置文件配合. 正文 服务: public interface ISelfService { void ShowLog(); } public ...
- Centos 安装 Influxdb + Chronograf
安装 Influxdb 1:下载安装包 官网下载地址 https://portal.influxdata.com/downloads/# wget https://dl.influxdata.com ...
- 【NX二次开发】Block UI 线宽
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- java并发编程JUC第十一篇:如何在线程之间进行对等数据交换
java.util.concurrent.Exchanger可以用来进行数据交换,或者被称为"数据交换器".两个线程可以使用Exchanger交换数据,下图用来说明Exchange ...
- 【题解】T749 localmaxima
# T749 localmaxima 权限限制没有超链接 题目描述 Description 给出一个排列,若其中一个数比它前面的数都大,则称为localmaxima数,求一个随机排列中localmax ...
- perror()函数的使用
perror()函数的功能是打印一个系统错误信息. perror()函数在Linux系统中属于库函数,在头文件中有如下定义: #include <stdio.h> ...
- gRPC入门—golang实现
1.RPC 1.1 什么是RPC RPC(Remote Procedure Call),即远程过程调用,过程就是方法,简单来说,它就是一种能够像调用本地方法一样调用远程计算机进程中的方法的技术,在这种 ...
- SQLLite数据库
SQLite数据库简介 一个小时内学习SQLite数据库 SQLite 教程 创建表: 1 sqlite> CREATE TABLE person (id INTEGER PRIMARY KEY ...
- 把新建的vue项目上传到码云
1:在码云上建一个仓库(使用Readme文件初始化这个项目的勾取消掉) 2:在项目文件中打开git命令窗口(如下图),命令git init 初始化git仓库 运行之后有一个.git文件夹 现在用vsc ...