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实现2048小游戏
Mar 30 Python
Python实现批量转换文件编码的方法
Jul 28 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
Python优先队列实现方法示例
Sep 21 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
python实现将汉字保存成文本的方法
Nov 16 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
Django 构建模板form表单的两种方法
Jun 14 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 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
咖啡知识大全
2021/03/03 新手入门
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
JS简单计算器实例
2015/01/20 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
Python实现的简单排列组合算法示例
2018/07/04 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
英国现代绅士品牌:Hackett
2017/12/17 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
机械设计及其自动化求职推荐信
2014/02/17 职场文书
医学生临床实习自我评价
2014/03/07 职场文书
装修协议书范本
2014/04/21 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
小学中队长竞选稿
2015/11/20 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书