python爬虫(十九)BeautifulSoup4库

1、BeautifulSoup4库也是一个HTML/XML解析器,主要也是提取数据。lxml只会局部遍历,BeautifulSoup是基于HTML DOM的,会载入整个文档,建立一个树状结构,在解析HTML时比较简单。

from bs4 import  BeautifulSoup

html=" 一段代码"

soup=BeautifulSoup(html,‘lxml‘)
# 1、获取所有tr标签
trs=soup.find_all(‘tr‘)
# 2、获取第2个tr标签
# limit表示前几个,先获取前两个,[1]表示第二个,就是前两个里面的第二个,在列表层面获取
trs=soup.find_all(‘tr‘,limit=2)[1]
# 3、获取所有class等于even的tr标签
# 在python中class是关键字,所以在class后加一个_,作为区分
trs=soup.find_all(‘tr‘,class_=‘even‘)
# 或者
trs=soup.find_all(‘tr‘,attrs={‘class‘:"even"})
# 4、获取所有id等于test,class也等于test的a标签
ali=soup.find_all(‘a‘,id=‘test‘,class_=‘test‘)
# 5、获取所有a标签的href属性
alist=soup.find_all(‘a‘)
for a in alist:
    href=a[‘href‘]
# 或者
href=a.attrs[‘href‘]
# 6、获取所有的职位信息(纯文本)
trs=soup.find_all(‘tr‘)[1:]
# 除去第0个tr标签
movies=[]
for tr in trs:
    movie={}
    tds=tr.find_all(‘td‘)
    title=tds[0].string
    category=tds[1].string
    city=tds[2].string

    movie[‘title‘]=title
    movie[‘category‘]=category
    movie[‘city‘]=city
    movies.append(movie)
# 或者
trs=soup.find_all(‘tr‘)[1:]
# 除去第0个tr标签
movies=[]
for tr in trs:
    movie = {}
    # 获得tr标签下所有的非空白文本,以列表的形式
    infos=list(tr.stripped_strings)
    movie[‘title‘]=infos[0]
    movie[‘category‘] = infos[1]
    movie[‘city‘] = infos[2]
    movies.append(movie)

2、find与find_all的区别:

find只提取符合条件的第一个标签,find_all可以提取所有满足要求的标签

3、string:获取某个标签下面的非标签字符串,返回的是个字符串

strings:获取某个标签下的子孙非标签字符串,返回的是个生成器

stripped_strings:获得某个标签下的子孙非标签字符串,去掉空白字符,返回的是个生成器

get_text:获取某个标签下的子孙非标签字符串,不是以列表的形式返回。返回的是普通字符串

原文地址:https://www.cnblogs.com/zhaoxinhui/p/12416438.html

时间: 2024-10-12 08:41:57

python爬虫(十九)BeautifulSoup4库的相关文章

Python爬虫入门之Urllib库的高级用法

1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文件,然后加载JS,CSS 等等,经过多次

python爬虫(九) requests库之post请求

1.方法: response=requests.post("https://www.baidu.com/s",data=data) 2.拉勾网职位信息获取 因为拉勾网设置了反爬虫机制,在拉勾网中,一些页面的信息获取方法是post,所以就用到了post方法 在拉勾网中,我们搜索与python相关的职业,如果我们爬取这一页的信息,是没有职业的信息的,因为职业的信息在另外的jsp页面上,所以我们需要在这个界面上爬取到职业的信息,选择一个城市+学生身份 同样,在页面右击,选择查看元素,找到网络

Python爬虫利器:BeautifulSoup库

Beautiful Soup parses anything you give it, and does the tree traversal stuff for you. BeautifulSoup库是解析.遍历.维护 "标签树" 的功能库(遍历,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问).https://www.crummy.com/software/BeautifulSoup BeautifulSoup库我们常称之为bs4,导入该库为:from bs4 im

Python爬虫(十四)_BeautifulSoup4 解析器

CSS选择器:BeautifulSoup4 和lxml一样,Beautiful Soup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据. lxml只会局部遍历,而Beautiful Soup是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml. BeautifulSoup用来解析HTML比较简单,API非常人性化,支持CSS选择器.Python标准库中的HTML解析器,也支持lxml的XML解析器.

Python爬虫(十五)_案例:使用bs4的爬虫

本章将从Python案例讲起:所使用bs4做一个简单的爬虫案例,更多内容请参考:Python学习指南 案例:使用BeautifulSoup的爬虫 我们已腾讯社招页面来做演示:http://hr.tencent.com/position.php?&start=10#a 使用BeautifulSoup4解析器,将招聘网页上的职位名称.职位类别.招聘人数.工作地点.时间.以及每个职位详情的点击链接存储出来. #-*- coding:utf-8 -*- from bs4 import Beautiful

python爬虫笔记----4.Selenium库(自动化库)

4.Selenium库 (自动化测试工具,支持多种浏览器,爬虫主要解决js渲染的问题) pip install selenium 基本使用 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_condition

Python爬虫入门之三urllib库的基本使用

前言 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很多库可以用来抓取网页,我们先学习urllib. 注:此博客开发环境为python3 urlopen 我们先来段代码: # urllib_urlopen.py # 导入urllib.request import urllib.request # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib.request.urlopen("http://www.bai

python爬虫入门request 常用库介绍

什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫. 其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据. 你可以爬去妹子的图片,爬取自己想看看的视频..等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取 爬虫的本质 模拟浏览器打开网页,获取网页中我们想要的那部分数据 浏览器打开网页的过程

python爬虫二、Urllib库的基本使用

什么是Urllib Urllib是python内置的HTTP请求库 包括以下模块 urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模块 urllib.robotparser robots.txt解析模块 urlopen 关于urllib.request.urlopen参数的介绍: urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=No

Python爬虫(十八)_多线程糗事百科案例

多线程糗事百科案例 案例要求参考上一个糗事百科单进程案例:http://www.cnblogs.com/miqi1992/p/8081929.html Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用:队列时线程间最常用的交互数据的形式. python下多线程的思考 对于资源,加锁是个重要的环节.因为python原生的list,dict等,都是not thread safe的.而Queue,是线程安全的,因此在满足使用条件下,建议使用队列 初始化: