首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python|初识爬虫

02 定位HTML标签 ? “美味的汤,绿色的浓汤, 在热气腾腾的盖碗里装! 谁不愿意尝一尝,这样的好汤? 晚餐用的汤,美味的汤!”...和h1标签一样,如果想要获取其他标签的内容我们呢只需要更改引用的对象就可以了。 03 异常处理 ?...爬取数据的过程中,我们难免会遇到各种各样的问题,比如:网络服务器宕机、网页数据格式不友好、目标数据的标签找不到,这些问题总是让我们的程序直接出错而导致无法运行,下面让我们来看一下在各种异常情况下常见的操作有哪些...获取HTML的异常 html = urlopen("在此输入想要获取的网页地址") 当我们运行获取HTML的代码时,肯能会发生两种异常: 网页在服务器上不存在(或者获取页面的时候出现错误) 服务器不存在...通常,在出现这些异常的时候urlopen函数都会抛出“HTTPError”异常,此时我们就可以把我们不是很常用的try...except...拿来用了: try: html = urlopen(

90610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    六、解析库之Beautifulsoup模块

    """ #基本使用:容错处理,文档的容错能力指的是在html代码不完整的情况下,使用该模块可以识别该错误。...print(soup.find_all('a',class_='sister ssss')) #查找类为sister和sss的a标签,顺序错误也匹配不成功 print(soup.find_all(class...就停止搜索返回结果 print(soup.find_all('a',limit=2)) #2.7、recursive:调用tag的 find_all() 方法时,Beautiful Soup会检索当前...() 方法将返回文档中符合条件的所有tag,尽管有时候我们只想得到一个结果.比如文档中只有一个标签,那么使用 find_all() 方法来查找标签就不太合适, 使用 find_all...() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果. find_all() 方法没有找到目标是返回空列表, find() 方法找不到目标时,返回 None . print(soup.find

    1.7K60

    4K美女壁纸爬取

    2.通过分析可以看出,当页面变化时,index后面会发生改变,但在第一页时并没有数字显示,所以做出以下操作,通过input获取我们想要爬取的页数,使用if语句对index进行赋值,再传入要爬取的网址中。...3.接下来就是获取网页源代码了,使用requests.get拿到网页源代码,在打印时发现出现了乱码,根据网页源代码里的提示,规定格式为'gbk',再获取bs对象main_page,指定解析器为'lxml...4.在网页源代码中分析得知,需要的内容在标签div class='slist'的标签中,每一个li标签下的a标签包含了要爬取的每张图片的所有信息,所以使用find('div',class_='slist...')先定位主标签,再使用find_all('a')定位每一个子标签。...注意:这里的下载地址是通过抓包获取,在子页面的网页源代码中是找不到的。 5.有了下载地址,使用requests模块获取响应。

    2.4K20

    Python爬虫(三):BeautifulSoup库

    1)find_all() find_all() 方法搜索当前 tag 的所有 tag 子节点,方法详细如下:find_all(name=None, attrs={}, recursive=True, text...() 方法时,默认会检索当前 tag 的所有子孙节点,通过设置参数 recursive=False,可以只搜索 tag 的直接子节点,示例如下: soup = BeautifulSoup('...') soup.find_all(data-foo='value') 首先当我在 Pycharm 中输入 data-foo='value' 便提示语法错误了,然后我不管提示直接执行提示 SyntaxError...一样,不同之处在于:find_all() 方法的返回结果是一个列表,find() 方法返回的是第一个节点,find_all() 方法没有找到目标是返回空列表,find() 方法找不到目标时,返回 None...soup.select('body a') 找到某个 tag 标签下的直接子标签 soup.select('body > a') 通过类名查找 soup.select('.elsie') soup.select

    1.6K20

    利用Python爬取散文网的文章实例

    find跟find_all的不同在于返回的东西不同 find返回的是匹配到的第一个标签及标签里的内容 find_all返回的是一个列表 比如我们写一个test.html 用来测试find跟find_all..."four") print s.find_all('div',id="four") print "------------------------------" 运行以后我们可以看到结果当获取指定标签时候两者区别不大当获取一组标签的时候两者的区别就会显示出来...par) if res.status_code==200: soup(res.text) i+=i 这部分的代码中我没有对res.status_code不是200的进行处理,导致的问题是会不显示错误...sign.search(title.text) file_name = title.text if match: file_name = sign.sub('a',str(title.text)) 获取标题的时候出现坑爹的事...,请问大佬们写散文你标题加斜杠干嘛,不光加一个还有加两个的,这个问题直接导致我后面写入文件的时候文件名出现错误,于是写正则表达式,我给你改行了吧。

    19130

    python爬虫从入门到放弃(六)之 BeautifulSoup库的使用

    beautifulSoup “美味的汤,绿色的浓汤” 一个灵活又方便的网页解析库,处理高效,支持多种解析器。...souo.a.previous_sinbling 获取上一个兄弟标签 标准选择器 find_all find_all(name,attrs,recursive,text,**kwargs) 可以根据标签名...同时我们是可以针对结果再次find_all,从而获取所有的li标签信息 for ul in soup.find_all('ul'): print(ul.find_all('li')) attrs...'lxml') for ul in soup.select('ul'): print(ul['id']) print(ul.attrs['id']) 总结 推荐使用lxml解析库,必要时使用...html.parser 标签选择筛选功能弱但是速度快 建议使用find()、find_all() 查询匹配单个结果或者多个结果 如果对CSS选择器熟悉建议使用select() 记住常用的获取属性和文本值的方法

    1.8K100

    Python-数据解析-Beautiful Soup-中

    find() 方法: 用于查找符合查询条件的第一个标签节点。 find_all() 方法: 查找所有符合查询条件的标签节点,并返回一个列表。...# 找到文档中所有的 标签和 标签 soup.find_all(["a", "b"]) ② attrs 参数 如果某个指定名字的参数不是搜索方法中内置的参数名,那么在进行搜索时,会把该参数当作指定名称的标签中的属性来搜索...有些标签的属性名称是不能使用的,在 HTML5 中的 “data-” 属性,在程序中使用时,会出现 SyntaxError 异常信息。...可以通过 find_all() 方法的 attrs 参数传入一个字典来搜索包含特殊属性的标签。...soup.find_all("a", limit=5) ⑤ recursive 参数 在调用 find_all() 方法时,BeautifulSoup 对象会检索当前节点的所有子节点。

    1.2K30

    BeautifulSoup4用法详解

    Want to buy a used parser' 但是当它出现在HTML文档中时, Comment 对象会使用特殊的格式输出: print(soup.b.prettify()) # # <...u'Tillie' 这是因为在原始文档中,字符串“Tillie” 在分号前出现,解析器先进入标签,然后是字符串“Tillie”,然后关闭标签,然后是分号和剩余部分.分号与标签在同一层级...() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果. find_all() 方法没有找到目标是返回空列表, find() 方法找不到目标时,返回 None . print(soup.find...标签.不要惊讶,这段代码的功能是查找所有出现在指定标签之前的标签,因为这个标签包含了开始的标签,所以标签一定是在之前出现的....Python内置的解析器引起的,解决方法是 安装lxml或html5lib 最常见的异常现象是当前文档找不到指定的Tag,而这个Tag光是用眼睛就足够发现的了. find_all() 方法返回 [] ,

    10.1K21

    用BeautifulSoup来煲美味的汤

    你可能会问BeautifulSoup:美味的汤?这个东西能干嘛?为什么起这个名字呢?先来看一下官方的介绍。...当传入“字符串”时, soup = BeautifulSoup(html_doc,"lxml") 当传入“文件句柄”并打开一个本地文件时, soup = BeautifulSoup(open("index.html...Dormouse's story' 上面那种方法只适用于tag只有一个NavigableString 类型的子节点情况,如果这个tag里面有多个节点,那就不行了,因为tag无法确定该调用哪个节点,就会出现下面这种输出...find_all()语法格式: find_all(name, attrs , recursive , text , **kwargs) 通过一个简单的例子,来感受一下它的魅力: soup.find_all...好了本篇关于用BeautifulSoup来煲美味的汤的介绍就到此为止了,感谢你的赏阅!

    1.8K30

    干了这碗“美丽汤”,网页解析倍儿爽

    BeautifulSoup(下文简称 bs)翻译成中文就是“美丽的汤”,这个奇特的名字来源于《爱丽丝梦游仙境》(这也是为何在其官网会配上奇怪的插图,以及用《爱丽丝》的片段作为测试文本)。...或其他方法检测信息->输出或保存 可以迭代式的查找,比如先定位出一段内容,再其上继续检索 开发时应注意不同方法的返回类型,出错时多看报错、多加输出信息 官方文档很友好,也有中文,推荐阅读 安装 推荐使用...# ['title'] soup.p.b # p 元素下的 b 元素 # The Dormouse's story soup.p.parent.name # p 元素的父节点的标签...# body 并不是所有信息都可以简单地通过结构化获取,通常使用 find 和 find_all 方法进行查找: soup.find_all('a') # 所有 a 元素 # [find_all 返回的是一个由 bs4.element.Tag 对象组成的 list,不管找到几个或是没找到,都是 list。

    98120

    干了这碗“美丽汤”,网页解析倍儿爽

    BeautifulSoup(下文简称 bs)翻译成中文就是“美丽的汤”,这个奇特的名字来源于《爱丽丝梦游仙境》(这也是为何在其官网会配上奇怪的插图,以及用《爱丽丝》的片段作为测试文本)。...或其他方法检测信息->输出或保存 可以迭代式的查找,比如先定位出一段内容,再其上继续检索 开发时应注意不同方法的返回类型,出错时多看报错、多加输出信息 官方文档很友好,也有中文,推荐阅读 安装 推荐使用...class 属性# ['title'] soup.p.b # p 元素下的 b 元素# The Dormouse's story soup.p.parent.name # p 元素的父节点的标签...# body 并不是所有信息都可以简单地通过结构化获取,通常使用 find 和 find_all 方法进行查找: soup.find_all('a') # 所有 a 元素# [find_all 返回的是一个由 bs4.element.Tag 对象组成的 list,不管找到几个或是没找到,都是 list。

    1.4K20

    Python爬虫--- 1.3 BS4库的解析器

    lxml解析器的安装: 依旧采用pip安装工具来安装: $ pip install lxml > 注意,由于我用的是unix类系统,用pip工具十分的方便,但是如果在windows下安装,总是会出现这样或者那样的问题... """ 试一下吧: import bs4 #首先我们先将html文件已lxml的方式做成一锅汤 soup = bs4.BeautifulSoup(open('Beautiful Soup...Comment:这是一个特殊的NavigableSting对象,在出现在html文档中时,会以特殊的格式输出,比如注释类型。...soup.body.b # The Dormouse's story 但是这个方法只能找到按顺序第一个出现的tag 获取所有的标签呢?...这个时候需要find_all()方法,他返回一个列表类型 tag=soup.find_all('a') # [<a class="sister" href="http://example.com/elsie

    77920

    精品教学案例 | 基于Python3的证券之星数据爬取

    进行分步调试时,生成soup对象时会有明显的延迟。lxml.etree.HTML(html)在step over的一瞬间便成功构建了一个可执行xpath操作的对象。并且lxml库只会进行局部遍历。...如果有心去浏览一下,会发现在print出来的源代码中,是找不到“下一页”这3个字的。...接下来通过soup获取数据 soup.find('thead', class_='tbody_right').find_all('td') 可以看到这样就以类似于列表的方式获取了数据表格的表头,只是表头还被标签框着...[i.get_text() for i in soup.find('thead', class_='tbody_right').find_all('td')] 代码释义: .get_text()是完成从标签里取出正文内容这一步...[i.xpath('td//text()') for i in tree.xpath('//tbody[@class="tbody_right"]//tr')] # 数据表格的内容 数据中,有一些--出现

    2.7K30

    Python BS4解析库用法详解

    :BS4官网LOGO图 BS4下载安装 由于 Bautiful Soup 是第三方库,因此需要单独下载,下载方式非常简单,执行以下命令即可安装: pip install bs4 由于 BS4 解析页面时需要依赖文档解析器...“解析器容错”指的是被解析的文档发生错误或不符合格式时,通过解析器的容错性仍然可以按照既定的正确格式实现解析。...1) find_all() find_all() 方法用来搜索当前 tag 的所有子节点,并判断这些节点是否符合过滤条件,最后以列表形式将符合条件的内容返回,语法格式如下: find_all( name...正则匹配: c.biancheng.net #attrs参数值 加入我们阅读所有教程 使用 find() 时,...如果没有找到查询标签会返回 None,而 find_all() 方法返回空列表。

    62040

    数据解析-bs4

    首先要了解什么是bs4 bs4是BeautifulSoup的简称,我叫他靓汤hhh bs4的原理: - 实例化一个bs对象,且将页面源码数据加载到该对象中。...- 使用bs对象中封装好的属性或者方法实现标签定位 - 将定位到的标签中的文本(属性)取出 *如果提取出来的内容乱码,在发起请求的text方法后面再上 ".encode='ISO-8859-...print(soup.li) # 打印源码中第一次出现li标签的tagName对应的代码 打印出来的结果: 网页<...但是运行出来的结果太长,就不放了 print(soup.find("div", class_="user-box")) # 根据源码中的class查找(属性定位) # find_all...a标签的直系内容 # 再提取出li标签中的a标签下的href中的内容,将他拼接成一个完整的网址(进入详细页可知网址不完整) detail_url = "https

    82820

    Python爬虫学习笔记之爬虫基础库

    回到顶部 beautifulsoup的搜索文档树 find_all find_all( name , attrs , recursive , string , **kwargs ) find_all()...为什么 find_all("p", "title") 返回的是CSS Class为”title”的标签?...() 方法将返回文档中符合条件的所有tag,尽管有时候我们只想得到一个结果.比如文档中只有一个标签,那么使用 find_all() 方法来查找标签就不太合适, 使用 find_all...() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果. find_all() 方法没有找到目标是返回空列表, find() 方法找不到目标时,返回 None . print(soup.find...回到顶部 beautifulsoup的css选择器 我们在写 CSS 时,标签名不加任何修饰,类名前加点,id名前加 #,在这里我们也可以利用类似的方法来筛选元素,用到的方法是 soup.select(

    1.8K20
    领券