上一篇大概写了下lxml的用法,今天我们通过案例来实践,爬取我的博客博客并保存在本地

爬取博客园博客

爬取思路:

1、首先找到需要爬取的博客园地址

2、解析博客园地址

# coding:utf-8
import requests
from lxml import etree
# 博客园地址
url = 'http://www.cnblogs.com/qican/'
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
}
html =requests.get(url,headers=headers).text
# 解析html内容
xml = etree.HTML(html)

3、通过博客名称抓取博客标题和详情链接。

经过分析数据我们需要a标签下的文字和href内容

# 标题
title_list = xml.xpath('//div[@class="postTitle"]/a/text()')
# 链接url
url_list = xml.xpath('//div[@class="postTitle"]/a/@href')

4、再次请求博客详情链接获取博客内容

通过for循环获取到标题,链接内容,然后再次请求博客链接获取博客内容

for i,j in zip(title_list,url_list):
# 再次请求博客链接
r2 = requests.get(j,headers=headers).text
# 解析内容
xml_content = etree.HTML(r2)
# 获取博客内容
content = xml_content.xpath('//div[@class="postBody"]//text()')

5、获取的博客内容写入到txt文件中。

通过with写入txt文件中,这里注意内容的编码格式

for x in content:
print(x.strip())
with open(i+'.txt','a+',encoding='utf-8')as f:
f.write(x)

写到这里发现我们都已经把博客内容写入了txt文件中,当然了这只是其中第一页的内容,我们通过观察url链接,发现分页是有page控制的,我们来模拟page数据获取全部博客内容

代码如下:

通过for循环获取模拟分页

# coding:utf-8
import requests
from lxml import etree
# 通过循环模拟url分页
for page in range(1,4):
# 博客园地址
url = 'https://www.cnblogs.com/qican/default.html?page=%s'%page
print(url)
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
}
html =requests.get(url,headers=headers).text
# 解析html内容
xml = etree.HTML(html)
# 标题
title_list = xml.xpath('//div[@class="postTitle"]/a/text()')
# 链接url
url_list = xml.xpath('//div[@class="postTitle"]/a/@href')
for i,j in zip(title_list,url_list):
print(i)
# 再次请求博客链接
r2 = requests.get(j,headers=headers).text
# 解析内容
xml_content = etree.HTML(r2)
# 获取博客内容
content = xml_content.xpath('//div[@class="postBody"]//text()')
# 写入内容
for x in content:
print(x.strip())
with open(i+'.txt','a+',encoding='utf-8')as f:
f.write(x)

简单的通过案例又一次加深了lxml的用法,当然方法很多种,喜欢哪种用哪种。~~~

爬虫---lxml爬取博客文章的更多相关文章

  1. python 小爬虫爬取博客文章初体验

    最近学习 python 走火入魔,趁着热情继续初级体验一下下爬虫,以前用 java也写过,这里还是最初级的爬取html,都没有用html解析器,正则等...而且一直在循环效率肯定### 很低下 imp ...

  2. python爬取博客圆首页文章链接+标题

    新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ...

  3. Python爬虫简单实现CSDN博客文章标题列表

    Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...

  4. [js高手之路]Node.js实现简易的爬虫-抓取博客文章列表信息

    抓取目标:就是我自己的博客:http://www.cnblogs.com/ghostwu/ 需要实现的功能: 抓取文章标题,超链接,文章摘要,发布时间 需要用到的库: node.js自带的http库 ...

  5. [Python学习] 简单网络爬虫抓取博客文章及思想介绍

            前面一直强调Python运用到网络爬虫方面很有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简介下Python是怎样爬去网络数据的,文章知识很easy ...

  6. Java使用Jsoup之爬取博客数据应用实例

    导入Maven依赖 <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependency> <g ...

  7. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  8. 使用JAVA爬取博客里面的所有文章

    主要思路: 1.找到列表页. 2.找到文章页. 3.用一个队列来保存将要爬取的网页,爬取队头的url,如果队列非空,则一直爬取. 4.如果是列表页,则抽取里面所有的文章url进队:如果是文章页,则直接 ...

  9. python3 爬虫之爬取安居客二手房资讯(第一版)

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- # Author;Tsukasa import requests from bs4 import Beau ...

随机推荐

  1. Python 读取照片的信息:拍摄时间、拍摄设备、经纬度等,以及根据经纬度通过百度地图API获取位置

    通过第三方库exifread读取照片信息.exifread官网:https://pypi.org/project/ExifRead/ 一.安装exifreadpip install exifread ...

  2. go语言设计模式之template

    template.go package template import ( "strings" ) type MessageRetriever interface { Messag ...

  3. 如何创建Azure Face API和计算机视觉Computer Vision API

    在人工智能技术飞速发展的当前,利用技术手段实现人脸识别.图片识别已经不是什么难事.目前,百度.微软等云计算厂商均推出了人脸识别和计算机视觉的API,其优势在于不需要搭建本地环境,只需要通过网络交互,就 ...

  4. golang数据结构之栈

    stack.go package stack import ( "errors" "fmt" ) type Stack struct { MaxTop int ...

  5. 【Sublime Text】sublime修改默认浏览器及使用不同浏览器打开网页的快捷键设置

    #第一步:安装SideBarEnhancements插件 下载插件,需要“翻墙”,故提供一下该插件的github地址:https://github.com/titoBouzout/SideBarEnh ...

  6. Luogu P2570 [ZJOI2010]贪吃的老鼠

    Luogu P2570 [ZJOI2010]贪吃的老鼠 题目描述 奶酪店里最近出现了\(m\)只老鼠!它们的目标就是把生产出来的所有奶酪都吃掉.奶酪店中一天会生产\(n\)块奶酪,其中第\(i\)块的 ...

  7. leetcode一刷总结,明天二刷

    1:基础的数据结构:图掌握极差,二叉树次之 2:常用的算法思想:dp,深度有先,广度优先等等. 3:优化以解决的题目,注意思想的总结 4:将约150道题都刷掉 5:优先解决设计算法思想的题目类别,其次 ...

  8. python保存文字到文件中

    使用encode方法即可,举例如下: #-*-coding:utf-8-*- def save(re, name): file = open("index_cut.txt", &q ...

  9. LeetCode 706:设计哈希映射 Design HashMap

    题目: 不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新这个值. get ...

  10. Linux 部署 nginx

    nginx搭建 1. 清除之前nginx环境 #查看nginx进程 ps -ef|grep nginx #找到nginx相对应的位置 whereis nginx #停止nginx服务 /usr/loc ...