相信有很多朋友在学习python后,一定都有过使用这门语言编写爬虫的想法。刚刚学习了python的小菜(因为很菜所以叫小菜)我也是如此。这里小菜和小菜的伙伴就以python新手的身份分享一下我们使用python爬虫爬取链家网上的房源信息的过程。如有大佬路过,求大佬指出其中需要改进的地方,小菜我感激不尽。
编写爬虫之前,我们首先应该搞清楚爬虫到底是干什么的。这里语言表达力不足的小菜只好借用度娘上的答案向大家介绍一下:
网络爬虫,又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
大概了解爬虫后,我们就要开始做编写爬虫的准备工作了。首先是我们已经确定是用python语言进行编写,然后我们就要确定使用什么开发平台和环境了,这里,小菜使用的是Windows平台 (准备之前查了一些资料,看到一些大佬说就开发而言,linux比windows用起来舒服,所以大家也可以试试linux),开发环境是pycharm2021社区版(开始下载了专业版,但是发现每天打开都需要输入激活码,并且对于我们一般人来说社区版也够用了,于是重新下载了社区版)。
接下来应该就是要准备编写爬虫了,其实,在小菜看来,编写爬虫其实就是各种库的应用。首先说一下我们的大概思路:爬取数据——解析数据——存储数据。第一步我们需要安装我们需要的库,安装方法网上很多,这里就不具体说了。接下来是导入我们需要的库,导入库的语句为 import +库;例如在我的代码中需要的库导入如下:
import re #正则表达式,进行文字匹配
from bs4 import BeautifulSoup#网页解析,获取数据
import urllib.request,urllib.error #制定URL,获取网页数据
import xlwt #进行excel操作
import sqlite3 #进行SQLLite数据库操作
接下来就是按照思路开始编写代码了。
一、爬取数据
我们第一步是爬取数据,从导入的库中应该可以猜出这里小菜使用的是正则表达式。首先我们打开链家网页:https://sh.lianjia.com/zufang/ :
我们以其中一个房源信息为例,可以看出它包含了整租、地段、几室几厅、房子朝向等信息,同时也可以思考自己需要获取其中的哪些信息。这时,我们使用组合键 fn+f12 可以打开该网页的源代码,点击左上角箭头,再点击左侧标注出的内容,我们会在源代码框内发现这些内容其实都是一一对应的:
到这里,我们也大概了解了网页结构,正则表达式也就正式上场啦。我们可以发现网页中包含浦东-金桥-嘉泷汇的源代码为:
<a target="_blank" href="/zufang/pudong/">浦东</a>
<a href="/zufang/jinqiao/" target="_blank">金桥</a>
<a title="嘉泷汇" href="/zufang/c5011102208437/" target="_blank">嘉泷汇</a>
于是,我们使用正则表达式获取网页信息的语句可以写为:
#区域
findplace1 = re.compile(r'<a href="/zufang/.*" target="_blank">(.*)</a>-<a href="/zufang/.* tar