[Python爬虫之路2]爬取百度贴吧内容
2017-02-17 15:20
441 查看
# 目标: # 1. 对百度贴吧的任意帖子进行抓取 # 2. 指定是否只抓取楼主的发帖内容 # 分析url可知url分为两个部分,基础部分,参数部分 __author__ = 'XZ' # -*- coding:utf-8 -*- # 使得python支持中文 import requests from bs4 import BeautifulSoup import re class BDTB: # 初始化,传入基础部分和参数部分(参数部分决定是否只看楼主) def __init__(self): self.base = None self.seeL = None # 从一个帖子中获取信息 def getTieInfo(self, tie): # 发帖人,内容(非图片),时间,楼数 name = tie.find('li',class_ = "d_name").text content = tie.find('div',class_ = "d_post_content").text wrap = tie.find('div',class_='post-tail-wrap').contents time = wrap[2].text floor = wrap[1].text print(name) print(time) print(content) print(floor) print(u"-------------------------------------------------------------------------------------------" u"------------------------------------\n") # 获取一个单页,参数为我们要获取的帖子页码数 def getApage(self,pageIndex): try: url = self.base + '?see_lz=' + str(self.seeL) + '&pn=' + str(pageIndex) reponse = requests.get(url).content soup = BeautifulSoup(reponse,'html.parser') ties = soup.find_all('div',class_ = re.compile("l_post l_post_bright j_l_post clearfix")) for tie in ties: self.getTieInfo(tie) except requests.HTTPError as e: print(e+"在获取贴吧内容时出现错误!") # 获取一共有多少页 def getPageNumber(self): try: url = self.base + '?see_lz=' + str(self.seeL) + '&pn=1' reponse = requests.get(url).content soup = BeautifulSoup(reponse,'html.parser') number = soup.find('li',class_ = "l_reply_num").contents[2].text return number except requests.HTTPError as e: print(e+"在获取贴吧页码时出现错误!") return None; # 开始运行 def start(self): # 输入贴子代号 self.base = input("请输入帖子代号:") # 输入是否只看群主 self.seeL = input("输入1表示只看群主,0表示浏览所有帖子:") # 先获取有页码数n pageNumber = int(self.getPageNumber()) # 然后每次按下enter:获取当前页,并解析出内容,如果到了最后一页,则无法继续,提示已经是最后一页 print("按Enter刷新下一页,输入Q退出!") for e in range(1,pageNumber): i = input() if i == 'Q' or i == 'q': print("退出程序!") break self.getApage(e) else: print("全部帖子以展示完,退出程序!") # 使用BDTB baseURL = 'http://tieba.baidu.com/p/3138733512' bdtb = BDTB() bdtb.start() #获取第一页的内容
class 的多值解析
关于bs4的class搜索:
虽然class是多至属性,但是是有写法要求的:
css_soup = BeautifulSoup('<p class="body strikeout"></p>')
一开始我尝试用
find_all('div',class_="a b c")来搜索,结果搜索列表为空,因为bs4把“a b c”当作一个字符串来解析了
相关文章推荐
- [python爬虫]利用urllib2爬取百度贴吧帖子相关内容
- 从零开始写Python爬虫 --- 1.5 爬虫实践: 获取百度贴吧内容
- Python爬虫实战(1)——百度贴吧抓取帖子并保存内容和图片
- 【Python3.6爬虫学习记录】(四)爬取百度贴吧某帖子内容及图片
- 【python学习】网络爬虫——爬百度贴吧帖子内容
- Python 爬虫模块 bs4 实战一:获取百度贴吧内容
- python爬虫入门:2--爬取百度贴吧内容
- Python 爬虫 多线程爬取百度贴吧内容,并将内容存到本地
- python入门,自制小爬虫获得百度贴吧内容
- Python写的百度贴吧的网络爬虫
- python 百度贴吧爬虫(下载图片)
- 使用简易Python爬虫下载百度贴吧图片
- 零基础写python爬虫之使用urllib2组件抓取网页内容
- 零基础写python爬虫之使用urllib2组件抓取网页内容
- [Python]网络爬虫:百度贴吧的网络爬虫(v0.4)源码及解析
- 零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫
- 零基础写python爬虫之抓取百度贴吧代码分享
- [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫