发表于: 2018-04-21 19:53:36
1 841
今天完成的事情:尝试了另一种文字爬虫
明天计划的事情:开始尝试图片爬虫
遇到的问题:暂无
收获:
安装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浏览器,打开博客首页http://www.santostang.com。右键网页页面,在弹出的对话框中,点击“检查”选项
步骤二:出现如下图所示的审查元素功能。点击左上角的鼠标键,然后在页面上点击想要的数据,下面的Elements就会出现相应的code所在的地方,就定位到你想要的元素了
第三步:储存数据
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()
评论