python爬虫获取多页天涯帖子


Posted in Python onFebruary 23, 2018

今天练习了抓取多页天涯帖子,重点复习的知识包括

  • soup.find_all和soup.selcet两个筛选方式对应不同的参数;
  • 希望将获取到的多个内容组合在一起返回的时候,要用'zip()'的代码来实现;
  • 两层代码结构之间的关系如何构造;

这里有一个疑问:有时候一个标签可以有多个属性,不知道soup.find_all()能不能接受不止一个属性以缩小查找的范围。

# 引入库和请求头文件
import requests
from bs4 import BeautifulSoup
headers = {
  'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
}

# 定义主体函数。函数主体由四部分组成:
#1.请求网址
#2.解析网页,形成可查找的html格式
#3.通过soup.select或者sopu.find_all查找需要的标签
#4.通过zip()代码将多个内容合并在一起

def get_content(url):
  res = requests.get(url,headers = headers)
  res.encoding = 'utf-8'
  soup = BeautifulSoup(res.text,'html.parser')
  contents = soup.find_all('div','bbs-content')
  authors = soup.find_all('a','js-vip-check')
  for author,content in zip(authors,contents):
    data = {
    'author':author.get_text().strip(),
    'content': content.get_text().strip()
  }
    print(data)
# 在这里构造一个两层链接结构:帖子的1、2、3、4页和帖子的详情页的关系在这里实现
if __name__ == '__main__':
  urls = ['http://bbs.tianya.cn/post-develop-2271894-{}.shtml'.format(str(i)) for i in range (1,5)] # 要注意,这里的‘5'是不包括在范围里的
  for url in urls:
    get_content(url)
Python 相关文章推荐
Python中urllib2模块的8个使用细节分享
Jan 01 Python
Python基于回溯法子集树模板实现8皇后问题
Sep 01 Python
Python 12306抢火车票脚本
Feb 07 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
python list转置和前后反转的例子
Aug 26 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
pytorch中的numel函数用法说明
May 13 Python
Python即时网络爬虫项目启动说明详解
Feb 23 #Python
Python爬豆瓣电影实例
Feb 23 #Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 #Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 #Python
python自动发邮件库yagmail的示例代码
Feb 23 #Python
Python KMeans聚类问题分析
Feb 23 #Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 #Python
You might like
PHP 简单数组排序实现代码
2009/08/05 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
网页中CDATA标记的说明
2010/09/12 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
javascript简易画板开发
2020/04/12 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
virtualenv实现多个版本Python共存
2017/08/21 Python
破解安装Pycharm的方法
2018/10/19 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
护士辞职信范文
2014/01/19 职场文书
倡议书格式模板
2014/05/13 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL