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 logging类库使用例子
Nov 22 Python
在Python的列表中利用remove()方法删除元素的教程
May 21 Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
Python简单实现enum功能的方法
Apr 25 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
Python安装依赖(包)模块方法详解
Feb 14 Python
Python netmiko模块的使用
Feb 14 Python
keras slice layer 层实现方式
Jun 11 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
用ldap作为django后端用户登录验证的实现
Dec 07 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表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
JScript的条件编译
2007/05/29 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python抓取框架 Scrapy的架构
2016/08/12 Python
python中正则表达式的使用方法
2018/02/25 Python
Python实现快速计算词频功能示例
2018/06/25 Python
详解Python:面向对象编程
2019/04/10 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
项目管理计划书
2014/01/09 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
文明村创建实施方案
2014/03/27 职场文书
科学发展观活动总结
2014/08/28 职场文书
2015年护士节慰问信
2015/03/23 职场文书
药店营业员岗位职责
2015/04/14 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL