`
xuanzhui
  • 浏览: 200571 次
  • 性别: 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 3利用BeautifulSoup抓取div标签的方法示例

    ### Python 3 使用 BeautifulSoup 抓取 Div 标签方法详解 在进行网页数据抓取时,经常需要用到Python的BeautifulSoup库来解析HTML文档,并从中提取有用的信息。在本篇文章中,我们将详细介绍如何使用Python 3结合...

    超简单BeautifulSoup爬虫

    这里我们用列表推导式来获取所有链接元素的`href`属性。 **5. 存储数据** 抓取到的数据通常需要存储起来,比如保存到文件或数据库。以文本文件为例: ```python with open('articles.txt', 'w', encoding='utf-8'...

    Scrapy实现CSDN自动登录获取博客分类列表

    在这个项目中,我们利用Scrapy来实现CSDN(China Software Developer Network)的自动登录功能,并进一步获取博客分类列表。这个过程涉及到了网络请求、网页解析、登录验证以及数据提取等多个环节。 首先,我们需要...

    Python 网页爬虫实例 - 使用 Requests 和 BeautifulSoup 抓取文章标题和链接

    使用场景及目标:学习如何使用 requests 和 BeautifulSoup 进行简单的网页爬虫开发,获取特定网站的数据。 阅读建议:读者可以在自己的环境中运行示例代码,并结合本文提供的详细解释进行练习,同时注意遵守网站的...

    Python爬虫自动获取CSDN博客收藏文章代码

    本教程将专注于使用Python爬虫来自动获取CSDN博客的收藏文章。CSDN(China Software Developer Network)是中国最大的开发者社区,其中包含了丰富的技术博客和资源,是程序员学习和交流的重要平台。 首先,我们需要...

    Python脚本自动获取新浪博客文章到word文档中

    这些信息应当存储在一个结构化的数据格式中,如列表或字典,方便后续处理。 接下来,我们将利用Python的`docx`库来创建Word文档。`python-docx`是一个用于读写Microsoft Word .docx文件的库。我们可以创建一个新的`...

    抓取CSDN博客文章的简单爬虫python源码

    CSDN(Chinese Software Developer Network)是中国的一个大型程序员社区,其中包含大量的技术博客,是获取编程知识的重要资源。 【描述】:“抓取CSDN博客文章的简单爬虫python源码” 这个描述暗示我们将学习如何...

    博客定时爬虫.zip

    例如,我们可以使用`get()`函数来获取博客的页面内容: ```python import requests response = requests.get('http://example.com/blog') html_content = response.text ``` 接着,我们需要解析HTML内容。这通常...

    CSDN博客下载器

    1. **输入用户名获取博客列表**:用户只需提供CSDN的用户名,下载器便会自动访问该用户的个人主页,抓取博客列表。 2. **多篇文章下载**:下载器能够一次性下载多篇博客,包括文章的标题、正文、评论等信息。 3. *...

    博客文章的下载与解析

    首先,我们要了解如何从互联网上获取博客文章。博客通常是以HTML网页的形式存在,每个博客文章都有一个唯一的URL。通过编写网络爬虫程序,我们可以利用HTTP或HTTPS协议向服务器发送请求,获取指定URL的HTML源代码。...

    新浪博客小爬虫

    在这个小爬虫中,目标是获取新浪博客用户的URL,因此解析过程会聚焦于识别与博客用户相关的HTML元素。 三、多线程技术 为了加快爬虫的运行速度,项目采用了多线程。在Python中,可以使用threading模块创建和管理多...

    网络爬虫书籍

    4. 编写解析规则,根据博客页面的HTML标签和属性,如标签的href属性来定位博客链接,标签来获取博客的标题等,从而提取出每篇博客的详细信息。 5. 将爬取的数据存储在适当的数据结构中,如列表、字典等。 6. 对爬取...

    中文独立博客列表-python

    在"中文独立博客列表"这个项目中,可能使用了Python的requests库来发送HTTP请求,获取博客的网页内容;使用BeautifulSoup或者lxml等库解析HTML,提取博客的链接、作者、更新时间等信息;可能还用到了pandas库对数据...

    csdn博客小爬虫python

    首先,程序需要能够识别和定位目标博客账号,这通常涉及到解析和理解CSDN博客的网页结构,以及提取出博客列表的URL。接着,爬虫会遍历这个列表,对每一个博客文章进行访问,提取文章的标题、内容和其他相关信息。...

    抓取、发布博客文章

    许多博客平台提供了公开的API,允许用户以结构化的方式获取和发布内容。例如,使用WordPress REST API,开发者可以通过发送HTTP请求获取文章详情,甚至发布新的文章。这种方式需要熟悉OAuth认证、JSON数据格式和HTTP...

    爬虫 python 新浪博客归档工具.zip

    在压缩包子文件的文件名称列表中,“python 新浪博客归档工具”可能是实际的Python脚本或相关的文件夹,里面可能包含以下组件: 1. Python源代码文件:通常以`.py`为扩展名,这是实现爬虫逻辑的主程序。 2. 数据存储...

    csdn_get_readcount(自动获取CSDN博文阅读量数据Python源码).zip

    【标题】中的“csdn_get_readcount”是一个Python脚本,专门用于自动获取CSDN博客文章的阅读量数据。这个功能对于博客作者或者数据分析人员来说非常有用,可以帮助他们了解文章的受欢迎程度,从而调整写作策略。 ...

    获取世界大学数据(人人网)

    2. **技术栈**:使用的编程语言(如Python)、爬虫框架(如Scrapy、BeautifulSoup)、数据解析库(如pandas)等。 3. **爬虫流程**:如何构造HTTP请求,解析HTML或JSON响应,跟踪页面链接,处理分页等。 4. **数据...

    Python登录并获取CSDN博客所有文章列表代码实例

    通过上述分析和代码示例,我们可以了解到使用Python模拟登录CSDN并获取博客文章列表的过程。这不仅对于想要自动化管理自己博客内容的用户来说非常有用,同时也为学习网络爬虫技术提供了一个很好的实践案例。需要注意...

    抓取csdn的个人博客

    3. **个人博客的爬**:强调了爬取的对象是特定用户的博客文章,需要识别和定位每个用户的博客页面及文章列表。 【压缩包子文件的文件名称列表】:crawlcsdn “crawlcsdn”很可能是一个包含了爬取结果的压缩文件,...

Global site tag (gtag.js) - Google Analytics