发表于: 2018-04-21 19:53:36

1 840


今天完成的事情:尝试了另一种文字爬虫

明天计划的事情:开始尝试图片爬虫

遇到的问题:暂无

收获:

安装python3, pip, beautifulsoup

第一步:Python3安装,请自行百度 Anaconda。这里推荐使用 Anaconda 的 Python 科学计算环境。只需像普通软件一样安装好 Anaconda,就可以把 Python 的环境变量、解释器、开发环境等安装在计算机中。

第二步:安装pip,pip是按照python各种包的工具,有了它安装python的各种包都很方便。如果你安装了 Anaconda,那么恭喜你,它已经自带了 pip 不用单独安装了。

第三步:有了pip,就可以安装beautifulsoup了。这个包可以很好地从网页代码中提取想要的数据。安装方法: 在 terminal (MacOS) 或是 cmd (Windows)中键入

pip install bs4

第四步:选一个python编译器来跑程序。为了代码的调试方便,可以直接用 Anaconda 中的 jupyter。使用方法:在 terminal (MacOS) 或是 cmd (Windows)中键入

jupyter notebook

2. 第一步:获取页面

#!/usr/bin/python# coding: utf-8import requestslink = "http://www.santostang.com/"headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} r = requests.get(link, headers= headersprint (r.text)

上述代码获取了博客首页的网页HTML代码。首先import requests,使用requests.get(link, headers=headers)获取了网页。值得注意的是:

1. 用requests的headers可以伪装成浏览器访问

2. r是requests的Response回复对象,我们从中可以获取我们想要的信息。r.text是获取的网页内容代码

3. 第二步:提取需要的数据

#!/usr/bin/python# coding: utf-8import requestsfrom bs4 import BeautifulSoup     #从bs4这个库中导入BeautifulSouplink = "http://www.santostang.com/"headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} r = requests.get(link, headers= headers)soup = BeautifulSoup(r.text, "lxml")      #使用BeautifulSoup解析这段代码title = soup.find("h1", class_="post-title").a.text.strip()print (title)

在获取到整个页面的HTML代码后,我们需要从整个网页中提取第一篇文章的标题。

这里用到beautifulsoup这个库了对爬下来的页面进行解析,首先我们需要导入这个库,from bs4 import BeautifulSoup。然后,把HTML代码转化为soup对象,接下来就是用soup.find("h1",class_="post-title").a.text.strip(),得到第一篇文章的标题,并且打印出来。

对初学者来说,beautifulsoup从网页中提取需要的数据,更加简单易用。

那么,我们是怎么从那么长的代码中准确找到标题的位置呢?

这里就要隆重介绍Chrome浏览器的“检查(审查元素)”功能了。下面介绍一下找到需要元素的步骤:

步骤一:使用Chrome浏览器,打开博客首页santostang.com。右键网页页面,在弹出的对话框中,点击“检查”选项

步骤二:出现如下图所示的审查元素功能。点击左上角的鼠标键,然后在页面上点击想要的数据,下面的Elements就会出现相应的code所在的地方,就定位到你想要的元素了

步骤三:在代码中找到标蓝色的地方,为<h1 class=”post-title”><a>echarts学习笔记(2) – 同一页面多图表</a>。于是,我们可以用soup.find("h1",class_="post-title").a.text.strip()提取出该博文的标题了

 第三步:储存数据

import requestsfrom bs4 import BeautifulSoup   #从bs4这个库中导入BeautifulSouplink = "http://www.santostang.com/"headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} r = requests.get(link, headers= headers)soup = BeautifulSoup(r.text, "lxml")   #使用BeautifulSoup解析这段代码title = soup.find("h1", class_="post-title").a.text.strip()print (title)with open('title.txt', "a+") as f:
    f.write(title)
    f.close()
储存到本地的txt文件也非常简单,在第二步的基础上,加上三行代码,就可以把这个字符串,保存在text里,并存到本地。txt文件地址应该和你的python文件在同一文件夹





返回列表 返回列表
评论

    分享到