爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13575|回复: 2

[源代码] 爬虫BeautifulSoup获取百度贴吧进击的巨人贴子标题

[复制链接]

新浪微博达人勋

发表于 2021-1-13 23:48:44 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
一、网页元素定位方法的比较

爬虫的应用中,最根本的是定位网页元素,
学会了定位网页元素,爬虫就学会一大半了

定位方法有4类:css选择器,XPath选择器,selenium的函数,BeautifulSoup
4种定位方法,我归纳于以下帖子:
爬虫之<网页节点定位方法>的整理

依据目前有限的应用体会,BeautifulSoup最为好使

借用  python中的beautifulsoup和xpath有什么异同点?  的说法:

易用性 BeautifulSoup >> lxml
BeautifulSoup用起来比较简单,API非常人性化,支持css选择器。

lxml的XPath写起来麻烦,开发效率不如BeautifulSoup。
title = soup.select('.content div.title h3')
同样的代码用Xpath写起来会很麻烦
title = tree.xpath("//*[@class='content']/div[@class='content']/h3")

所以,
BeautifulSoup比XPath要直观很多,
我觉得,BeautifulSoup之于XPath,就好比Vue之于JavaScript



密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2021-1-13 23:53:35 | 显示全部楼层
二、BeautifulSoup实战:进击的巨人

目的:从“进击的巨人”百度贴吧获得帖子名称

from bs4 import BeautifulSoup
from urllib import request

url='https://tieba.baidu.com/f?kw=%BD%F8%BB%F7%B5%C4%BE%DE%C8%CB&fr=ala0&tpl=5'#进击的巨人贴吧首页
response = request.urlopen(url)
soup=BeautifulSoup(response.read())  #获得网页的soup对象

#观察标题所在元素的相同属性:
#<a rel="noreferrer" href="/p/7187949465" title="权利的游戏1-8季未删、整理好了、值得收藏 要的来" target="_blank" class="j_th_tit ">权利的游戏1-8季未删、整理好了、值得收藏 要的来</a>
#<a rel="noreferrer" href="/p/7191005148" title="权利的游戏1-8季超高清未删减版已经打包整理好了!" target="_blank" class="j_th_tit ">权利的游戏1-8季超高清未删减版已经打包整理好了!</a>

x=soup.find_all('li',attrs={'class':'j_thread_list clearfix'})
for j in x:
    y=j.find_all('a',attrs={'rel':'noreferrer','target':'_blank','class':'j_th_tit'})
    print(y[0].get_text())#标签文字

输出结果:
......
好家伙,这id,这质量,搁这向mappa宣战呢
我说一句巨人的粉丝天下第一难伺候没问题吧
不懂就问,为啥大家那么讨厌后期艾伦
mappa第五集作为爆点比得上wit的哪个?
家人们,击剑王要乱s地鸣了家人们
......


总结:代码只用了9行,清清楚楚,明明白白


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-1-13 23:56:34 | 显示全部楼层
三、BeautifulSoup实战---冰与火之歌

贴吧的网页代码也很单纯
以上代码,只需要改url就能换另一个贴吧

from bs4 import BeautifulSoup
from urllib import request

url='https://tieba.baidu.com/f?kw=%C8%A8%C0%FB%B5%C4%D3%CE%CF%B7&fr=ala0&tpl=5'#冰与火之歌
# url='https://tieba.baidu.com/f?kw=%BD%F8%BB%F7%B5%C4%BE%DE%C8%CB&fr=ala0&tpl=5'#进击的巨人
response = request.urlopen(url)
soup=BeautifulSoup(response.read())  #获得网页的soup对象

#观察标题所在元素的相同属性:
#<a rel="noreferrer" href="/p/7187949465" title="权利的游戏1-8季未删、整理好了、值得收藏 要的来" target="_blank" class="j_th_tit ">权利的游戏1-8季未删、整理好了、值得收藏 要的来</a>
#<a rel="noreferrer" href="/p/7191005148" title="权利的游戏1-8季超高清未删减版已经打包整理好了!" target="_blank" class="j_th_tit ">权利的游戏1-8季超高清未删减版已经打包整理好了!</a>

x=soup.find_all('li',attrs={'class':'j_thread_list clearfix'})
for j in x:
    y=j.find_all('a',attrs={'rel':'noreferrer','target':'_blank','class':'j_th_tit'})
    print(y[0].get_text())#标签文字

输出结果:
......
权利的游戏1-8季未删、整理好了、值得收藏 要的来
&#127374;【网盘】权利的游戏1-8季未删减全整理好了#权力的游戏#
权L的游戏1-8季.无减整理好了.&#10133;微信peipei-nn
权利的游戏~整理
【权利的游戏】1-6
你们好,我是新入坑的美剧党
......
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表