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实现获取网站PR及百度权重
Jan 21 Python
利用Python的装饰器解决Bottle框架中用户验证问题
Apr 24 Python
实例讲解Python编程中@property装饰器的用法
Jun 20 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 Python
Python查找第n个子串的技巧分享
Jun 27 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
Python 多线程其他属性以及继承Thread类详解
Aug 28 Python
opencv3/C++ 平面对象识别&透视变换方式
Dec 11 Python
django框架两个使用模板实例
Dec 11 Python
python实现最速下降法
Mar 24 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 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比较操作符的安全问题
2015/12/03 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
详解AngularJS 模态对话框
2016/04/07 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
python GUI计算器的实现
2020/10/09 Python
Pycharm github配置实现过程图解
2020/10/13 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
广告学专业推荐信范文
2013/11/23 职场文书
信息技术课后反思
2014/04/27 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
班主任寄语2015
2015/02/26 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
导游词之天津盘山
2019/11/01 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript