今天我们将要学习如何使用BeautifulSoup库来抓取网站。BeautifulSoup是一个很好的工具,用于解析HTML代码并准确获取所需的信息。因此,无论您是从新闻网站,体育网站,还是在线商店的价格中提取新闻等,BeautifulSoup和Python都可以帮助您快速轻松地完成这些工作。

接下来先看看BeautifulSoup的基本使用,我在桌面上新建一个test.html内容如下:

该文件的html源代码如下:

接下来我们使用BeautifulSoup来进行操作解析这个文件。首先需要安装BeautifulSoup库,lxml解析器库用于解析html,html5lib库用于像访问浏览器页面一样访问网页:

安装requests库,用于请求web地址:

开始编码操作,首先我们导入BeautifulSoup和requests包:

from bs4 import BeautifulSoupimport requests

接下来打开上面新建的test.html获取到源代码信息,注意这里的编码选择utf-8,然后初始化BeautifulSoup,并使用lxml进行解析:

with open('test.html',encoding='utf-8') as html_file:soup = BeautifulSoup(html_file,'lxml')

我们打印一下soup看下输出的内容:

print(soup)

一个简单的web网页

测试网页


文章1

文章1内容


文章2

文章2内容


底部信息

这是一个标准的html源代码输出内容。接下来我们获取title标签,并输出:

title = soup.titleprint(title)

一个简单的web网页

获取一下title标签中的文本:

title_text = soup.title.textprint(title_text)

一个简单的web网页

获取div标签:

div = soup.divprint(div)

文章1

文章1内容

使用find方法获取div并且指定div的样式class名字为footer的div:

foot_div = soup.find('div',class_='footer')print(foot_div)

底部信息

使用find_all方法获取所有div并且指定div的样式class名字为article的div,获取到标题和内容:

for article in soup.find_all('div',class_='article'):headline = article.h2.a.textprint(headline)summary = article.p.textprint(summary)

文章1文章1内容文章2文章2内容

以上呢就是BeautifulSoup的基本使用方法了,接下来步入正题,我们开始搞一波天涯论坛的帖子,然后将帖子的标题、链接、作者、点击率、回复率、回复时间信息保存到一个csv的文件中去。

这里我们去爬取天涯论坛-旅游论坛-辽阔东北板块为例,地址为:

http://bbs.tianya.cn/list-874-1.shtml,内容截图大致如下:

分析网页html源代码可知,这是一个table表格组成的数据列表,我们只需要解析td中的内容提取出来放入到csv中即可:

我们新建一个py3_tianya.py文件:

#引入相关的包from bs4 import BeautifulSoupimport requestsimport csv#定义一个类天涯 初始化需要的字段属性class Tianya:title = ''link = ''author = ''click = ''replay = ''replaytime = ''#使用requests库访问论坛地址,获取到html源代码source = requests.get('http://bbs.tianya.cn/list-874-1.shtml').text#初始化BeautifulSoup,并使用lxml进行解析soup = BeautifulSoup(source,'lxml')#定义天涯根地址之后获取链接拼接使用root_site ='http://bbs.tianya.cn'#创建csv文件进行写入csv_file = open('tianya_scrape.csv', 'w')csv_writer = csv.writer(csv_file)#写入csv标题头内容csv_writer.writerow(['标题', '链接', '作者','点击','回复','回复时间'])#查出所有表格中tr标签for index,article in enumerate(soup.find_all("tr")):#实例化天涯对象ty = Tianya()#index为0的tr过滤掉,因为是表格标题头部分if index > 0 :#使用find_next()方法获取所有的属性信息ty.title = article.find_next('td').text.strip()ty.link = root_site+article.find_next('td').a['href'].strip()ty.author = article.find_next('td').find_next('td').textty.click = article.find_next('td').find_next('td').find_next('td').textty.replay = article.find_next('td').find_next('td').find_next('td').find_next('td').textty.replaytime = article.find_next('td').find_next('td').find_next('td').find_next('td').find_next('td').text#写入csv文件中csv_writer.writerow([ty.title, ty.link, ty.author,ty.click,ty.replay,ty.replaytime])#关闭文件流csv_file.close()

执行代码会生成一个tianya_scrape.csv文件,内容截图如下:

今天的初始web爬虫就到这里,我们下节见了。

频繁爬取天涯的帖子会不会被抓_web爬虫-搞一波天涯论坛帖子练练手相关推荐

  1. python可以爬取的内容有什么_Python爬取视频(其实是一篇福利)过程解析 Python爬虫可以爬取什么...

    如何用python爬取视频网站的数据 如何用python爬取js渲染加载的视频文件不是每个人都有资格说喜欢,也不是每个人都能选择伴你一生! 有哪位大神指导下,有些视频网站上的视频文件是通过 js 加载 ...

  2. python爬虫之汽车之家论坛帖子内容爬取

    Datawhale爬虫 第五期 Day7 实战项目:汽车之家车型论坛帖子信息 作为国内目前第一大汽车论坛,反爬虫很恶心,中间很多坑. 新手,第一次搞这么复杂的爬虫,前期没有排查,都是遇到坑的时候再返回 ...

  3. python爬虫可以爬取哪些有用的东西_有哪些网站用爬虫爬取能得到很有价值的数据?...

    有哪些网站用爬虫爬取能得到很有价值的数据? 题主是个web程序员,最近想转去做数据分析,先练习的爬虫(python),各种爬取技巧以及多网站爬取等已经掌握,但发现转方向最无奈的是方向(要抓什么数据来干 ...

  4. Php使用selenium爬虫,selenium,python爬虫_使用selenium爬取网站时输出结果不正确,selenium,python爬虫 - phpStudy...

    使用selenium爬取网站时输出结果不正确 网站链接:http://www.ncbi.nlm.nih.gov/pubmed?term=(%222013%22%5BDate%20-%20Publica ...

  5. bs4爬取的时候有两个标签相同_4.4 爬虫中的bs4数据爬取步骤

    >>.第三方包先安装 beatifulsoup抓取工具 位置:第三方开发包,如果使用,则需要单独下载的工具包 安装:后台命令:9版本以下----pip install bs4 或者 pip ...

  6. app.vue里使用data_Python爬虫使用正则爬取网站,正则都不会就别玩爬虫了!

    本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关.本文章是自己学习的一些记录.欢迎各位大佬点评! 源码在GitHub上面,且相关介绍更 ...

  7. python爬取网页防止重复内容_python解决网站的反爬虫策略总结

    本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面 ...

  8. python爬取b站排行榜_实时爬取B站排行榜并保存为表格——每周一个爬虫小教程系列...

    从这周开始,每周来一个爬虫小教程,希望对你们有所帮助,这次的目标是B站排行榜至于爬取什么内容,目前感觉就把序号,名称以及评分爬取下来吧(因为我是边写教程边写代码的) 这次需要用到的知识:Request ...

  9. python爬取b站视频封面_学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面...

    学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面 import os import requests import re import json from bs4 import B ...

最新文章

  1. Centos7多内核情况下修改默认启动内核方法
  2. 计算机科学和Python编程导论(三) 一些简单的数值程序
  3. 在Python中计算一次性计算多个百分位数percentile、quantile
  4. java dexclassloader_DexClassLoader加载apk
  5. pandas(三) -- DataFrame的基本操作
  6. JMetro 5.5版发布
  7. 【网络基础】【TCP/IP】私有IP地址段
  8. Introducing and integrating Hibernate(Chapter 2 of Hibernate In Action)
  9. ElasticSearch学习(五):数据导入之Logstash
  10. BusyBox 中添加新命令
  11. 北京邮电大学计算机考研资料汇总
  12. endnote找不到国标_电动车新国标实施首日,实况如何?遇到这些问题别急!
  13. sql server 备份mysql_SQL Server远程数据库操作(备份、还原等)
  14. token什么意思中文在C语言中,token是什么意思(token的含义及使用方法)
  15. PostOffice
  16. vue构建pc端项目(ElementUI)、vue入门小应用
  17. English:现在分词和过去分词的用法
  18. DAU和MAU的分析
  19. 王迪手机软件测试,王迪的作品集 - 新片场
  20. 【转】拜占庭政治经济体

热门文章

  1. 【Jmeter】JSON提取器之各种提取操作
  2. 汉化manjaro下的火狐浏览器
  3. 2020-2021 ACM-ICPC, Asia Nanjing Regional Contest (XXI Open Cup, Grand Prix of Nanjing)
  4. Linux命令——终端格式命令,两种help 方法查找命令使用方式
  5. c语言与指针——(二)指针变量的定义与赋值
  6. 中兴与日企联盟 目标锁定当地WCDMA市场
  7. 【SQL中case then的用法】
  8. 钓鱼攻击防不胜防,该如何预防网络钓鱼攻击?
  9. mysql php distinct_mysql distinct用法是什么
  10. 中国玛瑙市场趋势报告、技术动态创新及市场预测