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基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
Python写的创建文件夹自定义函数mkdir()
Aug 25 Python
python语言使用技巧分享
May 31 Python
python 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
Python中对象的引用与复制代码示例
Dec 04 Python
python删除字符串中指定字符的方法
Aug 13 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
Django 批量插入数据的实现方法
Jan 12 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
Django如何批量创建Model
Sep 01 Python
python 解决微分方程的操作(数值解法)
May 26 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
php header功能的使用
2013/10/28 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
sqlalchemy对象转dict的示例
2014/04/22 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
python如何求100以内的素数
2020/05/27 Python
HTML5新标签兼容——> 的两种方法
2018/09/12 HTML / CSS
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
.net开发工程师面试题
2014/02/25 面试题
公务员政审个人鉴定
2014/02/25 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
活动总结书怎么写
2015/05/11 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
MySQL sql模式设置引起的问题
2022/05/15 MySQL