`
xuanzhui
  • 浏览: 197020 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

BeautifulSoup获取博客列表

阅读更多

安装

pip install beautifulsoup4

建议安装lxml,作为beautiful soup的内置解析器

对于windows,到 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 搜索下载并安装

pip3 install "lxml-3.6.0-cp35-cp35m-win_amd64.whl"

 

核心方法

http://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

find(name, attrs, recursive, text, **kwargs)

find_all(name, attrs, recursive, text, **kwargs)

name对应tag名字,比如'div'

attrs对应tag的属性,比如id='myid',对于class直接输入名字,不可使用class='xxx',可以设置True和False来过滤tag是否拥有该属性

 

tag可以通过 . 运算符依次获取下一级的tag,e.g. tag.div.a

tag的内容可以通过string获取,属性可以通过get('attr_name')获取

 

代码

import requests
from bs4 import BeautifulSoup

user_root_blog = 'http://xuanzhui.iteye.com/'

# 伪装一下
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36'}

page_str = requests.get(user_root_blog, headers = headers).text

# 解析一下总共多少页
soup = BeautifulSoup(page_str, 'lxml')
# 分页数据的根节点
page_div = soup.find('div', 'pagination')

total_page = 1

if page_div:
	page_tags = page_div.find_all('a', False)
	page_arr = [int(page.string) for page in page_tags if page.string.isdigit()]

	if page_arr:
		total_page = max(page_arr)

print('total page:', total_page)


# 解析blog的函数
def parse_to_get_blogs(page_str):
	soup = BeautifulSoup(page_str, 'lxml')

	# 得到文章列表标题的所有节点
	title_tags = soup.find_all('div', 'blog_title')

	if not title_tags:
		return

	url_pref = user_root_blog[:-1]
	return [(url_pref + tag.h3.a.get('href'), tag.h3.a.string) for tag in title_tags]


blogs = parse_to_get_blogs(page_str)

# 如果没有文章
if not blogs:
	print("no valid titles")
	exit(0)

for i in range(2, total_page + 1):
	url = user_root_blog + '?page=' + str(i)
	print('parsing ', url)
	page_str = requests.get(url, headers=headers).text
	blogs.extend(parse_to_get_blogs(page_str))

with open('blogs.txt', 'w') as f:
	for tmp in blogs:
		f.write(tmp[0])
		f.write('\n')
		f.write(tmp[1])
		f.write('\n\n')

 

 

 

 

分享到:
评论

相关推荐

    Python爬取公开资源的标题

    这段代码是用Python实现的一个简单的爬虫,目的是从公开博客中爬取文章的相关信息,并将这些信息存储到CSV文件中。爬虫采用requests库来发送请求,BeautifulSoup库来解析HTML文档,csv库来存储数据。 首先,定义了一...

    这是一个关于python爬虫的一个小案例,可以帮助读者了解python爬虫

    这段代码是一个简单的Python爬虫程序,用于从指定的URL(在这个例子中是http://example.com)获取网页内容。...这可以用于简单的网页数据提取,例如新闻网站、博客或任何其他有标题和段落文本的网站。

    网络爬虫书籍

    这里以爬取我的CSDN博客信息,包括获取每篇博客的标题、链接、书写日期、访问量、评论数量等信息为例,结合BeautifulSoup,进行网页的解析,详细的说明在代码的注解中讲解。博客首页长这样

    中文博客Crawler小案例.rar

    Python 爬虫是指使用 Python 编程语言编写的用于自动化地从互联网上获取数据的程序。爬虫程序会模拟人类在浏览器中访问网页,通过解析HTML页面、提取数据和进行相应的处理,将所需的数据爬取下来。 Python 爬虫的...

    Python爬虫案例.md

    网络教程:有很多免费的在线教程可以帮助你学习Python爬虫,比如Python官方文档中的requests库和BeautifulSoup库的使用说明,以及一些博客和视频教程,如Bilibili、CSDN等。 实践项目:尝试使用爬虫工具抓取不同网站...

    数据分析实战项目--链家租房数据可视化分析.pdf

    之后就开始匹配我们需要的内容,⽤re包⾥⾯的findall⽅法找出和正则表达式匹配的内容,并先将内容暂时存在⼀个data列表⾥,等 到所有想要得到的内容都匹配完成之后,再加⼊datalist列表中。这⼀步,我们会得到所有...

    Python爬虫抓取股票资料

    以前写的Python抓取股票资料的项目,因为效率太低后来没有用了,用python跑完一圈大概要几十分钟,没法使用,但是当python的demo还是不错的,这个demo用到的技能包括数据库操作,定时任务,用BeautifulSoup爬虫,...

    课件-Python项目案例开发从入门到实战-爬虫、游戏和机器学习

    Python爬虫项目是使用Python编写的应用程序,用于自动化地从互联网上获取数据。通过编写爬虫程序,可以模拟人类用户在网页上浏览和提取信息的行为,从而实现对网页内容的抓取、解析和提取。 以下是一些常见的Python...

    python采集博客中上传的QQ截图文件

    爬取整个网站,然后获取每个文章页面的图片名,并判断如果是类似于QQ截图20120926174732-300×15.png的形式就输出并将该图片地址和对应的文章地址保存在文件中,然后通过该文件来逐个修改。 好了,下面是程序代码: ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    02 Python作业要求以及博客 03 编程语言介绍 04 Python种类介绍 05 Python安装以及环境变量的操作 06 Python初识以及变量 07 Python条件语句和基本数据类型 08 Python while循环语句以及练习题 09 练习题讲解 第10...

    rnn-composer-helper:我用来处理ABC文件并对其进行训练的脚本

    我开设了一个名为博客,每天我都会发布一种使用这种方法生成的。 我不共享自己的数据集,因为我不确定可能存在的版权问题。 先决条件 您需要从安装Torch和其他要求。 只需按照说明进行操作即可。 我严重依赖系统...

    python小爬虫(抓取壁纸并保存到本地)

    ** 楼主也才学习python半年,写下在这个博客算是对自己成长的记录和提高吧,欢迎小伙伴们一起探讨,共同提高。** ** 话不多说,这个爬虫的目的是将某壁纸网站上的图片爬取下来,并保存在本地。所以我们需要...

Global site tag (gtag.js) - Google Analytics