提示:本学习来自Ehco前辈的文章, 经过实现得出的笔记。

目标

http://tieba.baidu.com/f?kw=linux&ie=utf-8

网站结构

学习目标

由于是第一个实验性质爬虫,我们要做的不多,我们需要做的就是:

1. 从网上爬下特定页码的网页
2. 对于爬下的页面内容进行简单的筛选分析
3. 找到每一篇帖子的 标题、发帖人、日期、楼层、以及跳转链接
4. 将结果保存到文本。

发现规律

&pn=0 : 首页
&pn=50: 第二页
&pn=100:第三页
&pn=50*n 第n页
50 表示 每一页都有50篇帖子。
这样就能实现翻页操作

附上代码

import requests
import time from bs4 import BeautifulSoup def get_html(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status() r.encoding = 'utf-8'
return r.text
except:
return "error" def get_content(url):
comments = []
html = get_html(url) soup = BeautifulSoup(html, 'lxml')
liTags = soup.find_all('li', attrs={'class':' j_thread_list clearfix'}) for li in liTags:
comment = {}
try:
#标题
comment['title'] = li.find(
'a', attrs={'class':'j_th_tit '}).text.strip()
#链接
comment['link'] = "http://tieba.baidu.com/" + \
li.find('a', attrs={'class' : 'j_th_tit'})['href']
#发帖人
comment['name'] = li.find(
'span', attrs = {'class':'tb_icon_author '}
).text.strip()
#发帖时间
comment['time'] = li.find(
'span', attrs={'class':'pull-right is_show_create_time'}
).text.strip()
#回复数量
comment['replyNum'] = li.find(
'span', attrs={'class':'threadlist_rep_num center_text'}
).text.strip()
comments.append(comment)
except:
print("出了点小问题")
return comments def Out2File(dict):
with open('TTBT.txt', 'a+') as f:
for comment in dict:
f.write('标题: {} \t 连接: {} \t 发帖人: {} \t 发帖时间: {} \t 回复数量: {} \n'.format(
comment['title'], comment['link'], comment['name'], comment['time'], comment['replyNum']
))
print("当前页面爬取完成") def main(base_url, deep):
url_list = []
for i in range(0, deep):
url_list.append(base_url + '&pn' + str(50 * i))
print("所有的网页已经下载到本地! 开始筛选信息") for url in url_list:
content = get_content(url)
Out2File(content)
print("所有的信息都已经保存完毕") base_url = 'http://tieba.baidu.com/f?kw=linux&ie=utf-8'
deep = 3 if __name__ == '__main__':
main(base_url, deep)

结果

零基础Python爬虫实现(百度贴吧)的更多相关文章

  1. 零基础Python爬虫实现(爬取最新电影排行)

    提示:本学习来自Ehco前辈的文章, 经过实现得出的笔记. 目标网站 http://dianying.2345.com/top/ 网站结构 要爬的部分,在ul标签下(包括li标签), 大致来说迭代li ...

  2. 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=10211084839195730432#page=25 中的42-45讲 {字典}

    #coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=1021108 ...

  3. 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=15873837810484552531 中的15-23讲

    #coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=1587383 ...

  4. 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=15873837810484552531 中的1-14讲

    #coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=1587383 ...

  5. 零基础Python应该怎样学习呢?(附视频教程)

    Python应该怎样学习呢? 阶段一:适合自己的学习方式 对于零基础的初学者来说,最迷茫的是不知道怎样开始学习?那这里小编建议可以采用视频+书籍的方式进行学习.看视频学习可以让你迅速掌握编程的基础语法 ...

  6. 如何用Python爬虫实现百度图片自动下载?

    Github:https://github.com/nnngu/LearningNotes 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或 ...

  7. python爬虫获取百度图片(没有精华,只为娱乐)

    python3.7,爬虫技术,获取百度图片资源,msg为查询内容,cnt为查询的页数,大家快点来爬起来.注:现在只能爬取到百度的小图片,以后有大图片的方法,我会陆续发贴. #!/usr/bin/env ...

  8. 【学习笔记】第二章 python安全编程基础---python爬虫基础(urllib)

    一.爬虫基础 1.爬虫概念 网络爬虫(又称为网页蜘蛛),是一种按照一定的规则,自动地抓取万维网信息的程序或脚本.用爬虫最大的好出是批量且自动化得获取和处理信息.对于宏观或微观的情况都可以多一个侧面去了 ...

  9. 零基础Python接口测试教程

    目录 一.Python基础 Python简介.环境搭建及包管理 Python基本语法 基本数据类型(6种) 条件/循环 文件读写(文本文件) 函数/类 模块/包 常见算法 二.接口测试快速实践 简单接 ...

随机推荐

  1. Docker ssh server

    这个话题真让我气愤啊,在家里的mac上我已经全部摆平了,结果在公司的Linux上就给堵住了 原因不祥,但最后在错误提示里,有个移除(remove)信息,我照做了,就没问题了,全通了 大概是linux里 ...

  2. [转-SSRF]什么是SSRF

    这些天专注了解了SSRF攻击(Server-side Request Forgery,服务器端请求伪造),对这类攻击有了自己的一些总结与看法,老外取这个名字是挺不错的,我很喜欢,这让我想到了CSRF( ...

  3. LeetCode28.实现strStr()

    实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...

  4. Vue系列之 => 动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. uva 1632 Alibaba

    题意: 一个人要从如果干个地方拿货,每个地方的货物是有存在时间的,到了某个时间之后就会消失. 按照位置从左到右给出货物的位置以及生存时间,这个人选择一个最优的位置出发,问拿完货物的最少时间. 思路: ...

  6. java踩坑

    1. java判断两个字符串是否相等用equals 2. java只传递指针遇到的坑: 1 import java.util.*; 2 3 public class mapTest { 4 publi ...

  7. File §1

    The Class of File, it can be seen as one document, also can be seen as list of documents. File  f = ...

  8. 量化交易-外汇交易-MetaTrader5

    量化交易-外汇交易-MetaTrader5 外汇有充足的流动性, 7*24, 交易成本低,多空双向,外加杠杆,无人能控盘,有模拟盘,相当适合做量化交易练习积累经验. 第一,全球最大最公平的市场.外汇市 ...

  9. Qt读取TXT文件时,GBK与UTF-8编码判断

    读取txt文件时,很多时候无法获取文件的编码格式.如果直接进行使用,则有可能出现乱码.需要在使用前将其转为Unicode(Qt的默认编码格式). 虽然实际的编码格式种类非常多,但平常主要使用的有GBK ...

  10. 关于Vue中的 render: h => h(App) 具体是什么含义?

    render: h => h(App) 是下面内容的缩写: render: function (createElement) { return createElement(App); } 进一步 ...