一、什么叫爬虫

爬虫,又名"网络爬虫",就是能够自动访问互联网并将网站内容下载下来的程序。它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的然后存储到云端,为网友提供优质的搜索服务的。

二、爬虫有什么用

你可能会说,除了做搜索引擎的公司,学爬虫有什么用呢?哈哈,总算有人问到点子上了。打个比方吧:企业A建了个用户论坛,很多用户在论坛上留言讲自己的使用体验等等。现在A需要了解用户需求,分析用户偏好,为下一轮产品迭代更新做准备。那么数据如何获取,当然是需要爬虫软件从论坛上获取咯。所以除了百度、GOOGLE之外,很多企业都在高薪招聘爬虫工程师。你到任何招聘网站上搜"爬虫工程师"看看岗位数量和薪资范围就懂爬虫有多热门了。

三、爬虫的原理

发起请求:通过HTTP协议向目标站点发送请求(一个request),然后等待目标站点服务器的响应。

获取响应内容:如果服务器能正常响应,会得到一个Response。Response的内容便是所要获取的页面内容,响应的内容可能有HTML,Json串,二进制数据(如图片视频)等等。

解析内容:得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析;可能是Json,可以直接转为Json对象解析;可能是二进制数据,可以做保存或者进一步的处理。

保存数据:数据解析完成后,将保存下来。既可以存为文本文档、可以存到数据库中。

四、Python爬虫实例

前面介绍了爬虫的定义、作用、原理等信息,相信有不少小伙伴已经开始对爬虫感兴趣了,准备跃跃欲试呢。那现在就来上"干货",直接贴上一段简单Python爬虫的代码:

1.前期准备工作:安装Python环境、安装PYCHARM软件、安装MYSQL数据库、新建数据库exam、在exam中建一张用于存放爬虫结果的表格house [SQL语句:create table house(price varchar(88),unit varchar(88),area varchar(88));]

2.爬虫的目标:爬取某租房网上首页中所有链接里的房源的价格、单位及面积,然后将爬虫结构存到数据库中。

3.爬虫源代码:如下

import requests #请求 URL 页面内容from bs4 import BeautifulSoup #获取页面元素import pymysql #链接数据库import time #时间函数import lxml #解析库(支持 HTML\XML 解析,支持 XPATH 解析)#get_page 函数作用:通过 requests 的 get 方法得到 url 链接的内容,再整合成BeautifulSoup 可以处理的格式def get_page(url):response = requests.get(url)soup = BeautifulSoup(response.text, 'lxml')return soup#get_links 函数的作用:获取列表页所有租房链接def get_links(link_url):soup = get_page(link_url)links_div = soup.find_all('div',class_="pic-panel")links=[div.a.get('href') for div in links_div]return links#get_house_info 函数作用是:获取某一个租房页面的信息:价格、单位、面积等def get_house_info(house_url):soup = get_page(house_url)price =soup.find('span',class_='total').textunit = soup.find('span',class_='unit').text.strip()area = 'test' #这里 area 字段我们自定义一个 test 做测试

info = {'价格':price,'单位':unit,'面积':area}return info#数据库的配置信息写到字典

DataBase ={'host': '127.0.0.1','database': 'exam','user' : 'root','password' : 'root','charset' :'utf8mb4'}#链接数据库def get_db(setting):return pymysql.connect(**setting)#向数据库插入爬虫得到的数据def insert(db,house):values = "'{}',"*2 + "'{}'"sql_values = values.format(house['价格'],house['单位'],house['面积'])sql ="""insert into house(price,unit,area) values({})""".format(sql_values)cursor = db.cursor()cursor.execute(sql)db.commit()#主程序流程:1.连接数据库 2.得到各个房源信息的 URL 列表 3.FOR 循环从第一个 URL 开始获取房源具体信息(价格等)4.一条一条地插入数据库(python 学习交流群631441315)

db = get_db(DataBase)links = get_links('https://bj.lianjia.com/zufang/')for link in links:time.sleep(2)house = get_house_info(link)insert(db,house)

首先,"工欲善其事必先利其器",用 Python 写爬虫程序也是一样的道理,写爬虫过程中需要导入各种库文件,正是这些及其有用的库文件帮我们完成了爬虫的大部分工作,我们只需要调取相关的借口函数即可。导入的格式就是 import 库文件名。这里要注意的是在 PYCHARM 里安装库文件,可以通过光标放在库文件名称上,同时按ctrl+alt 键的方式来安装,也可以通过命令行(Pip install 库文件名)的方式安装,如果安装失败或者没有安装,那么后续爬虫程序肯定会报错的。在这段代码里,程序前五行都是导入相关的库文件:requests 用于请求 URL 页面内容;BeautifulSoup 用来解析页面元素;pymysql 用于连接数据库;time 包含各种时间函数;lxml 是一个解析库,用于解析 HTML、XML 格式的文件,同时它也支持 XPATH 解析。

其次,我们从代码最后的主程序开始看整个爬虫流程:

通过 get_db 函数连接数据库。再深入到 get_db 函数内部,可以看到是通过调用Pymysql 的 connect 函数来实现数据库的连接的,这里**seting 是 Python 收集关键字参数的一种方式,我们把数据库的连接信息写到一个字典 DataBase 里了,将字典里的信息传给 connect 做实参。

通过 get_links 函数,获取链家网租房首页的所有房源的链接。所有房源的链接以列表形式存在 Links 里。get_links 函数先通过 requests 请求得到链家网首页页面的内容,再通过 BeautifuSoup 的接口来整理内容的格式,变成它可以处理的格式。最后通过电泳find_all 函数找到所有包含图片的 div 样式,再通过一个 for 循环来获得所有 div 样式里包含的超链接页签(a)的内容(也就是 href 属性的内容),所有超链接都存放在列表links 中。
通过 FOR 循环,来遍历 links 中的所有链接(比如其中一个链接是:https://bj.lianjia.com/zufang/101101570737.html)

用和 2)同样的方法,通过使用 find 函数进行元素定位获得 3)中链接里的价格、单位、面积信息,将这些信息写到一个字典 Info 里面。

调用 insert 函数将某一个链接里得到的 Info 信息写入数据库的 house 表中去。深入到 insert 函数内部,我们可以知道它是通过数据库的游标函数 cursor()来执行一段 SQL语句然后数据库进行 commit 操作来实现响应功能。这里 SQL 语句的写法比较特殊,用到了 format 函数来进行格式化,这样做是为了便于函数的复用。

最后,运行一下爬虫代码,可以看到链家网的首页所有房源的信息都写入到数据里了。(注:test 是我手动指定的测试字符串)

后记:其实 Python 爬虫并不难,熟悉整个爬虫流程之后,就是一些细节问题需要注意,比如如何获取页面元素、如何构建 SQL 语句等等。遇到问题不要慌,看 IDE 的提示就可以一个个地消灭 BUG,最终得到我们预期的结构。

转载于:https://www.cnblogs.com/qingdeng123/p/11299528.html

Python爬取租房数据实例,据说可以入门爬虫的小案例!相关推荐

  1. python爬虫案例-Python爬取租房数据实例,据说可以入门爬虫的小案例!

    一.什么叫爬虫 爬虫,又名"网络爬虫",就是能够自动访问互联网并将网站内容下载下来的程序.它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的 ...

  2. 一小时入门Python爬虫,连我都会了!Python爬取租房数据实例

    一.什么叫爬虫 爬虫,又名"网络爬虫",就是能够自动访问互联网并将网站内容下载下来的程序.它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的 ...

  3. 编程python爬取网页数据教程_实例讲解Python爬取网页数据

    一.利用webbrowser.open()打开一个网站: >>> import webbrowser >>> webbrowser.open('http://i.f ...

  4. python爬虫教程:实例讲解Python爬取网页数据

    这篇文章给大家通过实例讲解了Python爬取网页数据的步骤以及操作过程,有兴趣的朋友跟着学习下吧. 一.利用webbrowser.open()打开一个网站: >>> import w ...

  5. 如何用python爬取网页数据,python爬取网页详细教程

    大家好,本文将围绕python怎么爬取网站所有网页展开说明,如何用python爬取网页数据是一个很多人都想弄明白的事情,想搞清楚python如何爬取网页数据需要先了解以下几个事情. 1.如何用Pyth ...

  6. python爬取网页公开数据_如何用Python爬取网页数据

    使用Python爬取网页数据的方法: 一.利用webbrowser.open()打开一个网站:>>> import webbrowser >>> webbrowse ...

  7. Python爬取天气数据及可视化分析!

    来源丨Python之王 Python爬取天气数据及可视化分析 说在前面 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本 ...

  8. Python爬取的数据存为json文件,并读取

    Python爬取的数据存为json文件,并读取 import requests import time from lxml import etree import jsondef json_data_ ...

  9. python爬取股票数据,以上证指数为例,可以爬取任何股票,保存为temp.csv文件

    python爬取股票数据,以上证指数为例,可以爬取任何股票,保存为temp.csv文件 import requests import pandas as pd# market: 0:沪市 1:深市 # ...

最新文章

  1. SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
  2. char型变量中能不能存储一个中文汉字?为什么?
  3. 零基础学Python-爬虫-5、下载网络视频
  4. 歌一定要带监听耳机吗_在演唱会上,歌手耳朵里戴的不是“耳机”,而是这个东西...
  5. C#在Linux上的开发指南
  6. flask manage port_后端Python3+Flask结合Socket.io配合前端Vue2.0实现简单全双工在线客服系统...
  7. vant-联系人卡片
  8. 孔板流量计计算公式_带你全面了解各种流量计!
  9. 黑进mysql_连接到MySQL数据库
  10. qq音乐linux版本下载地址,QQ音乐linux下载
  11. 可以使用C#语言的在线ACM题库
  12. 基于Python的Fisher二分类判别模型实现
  13. 【Docker】seaweedfs的搭建与使用
  14. 萝卜青菜各有所爱------htm 与 html
  15. Ubuntu 下访问摄像头 及将摄像头数据重定向到http协议 远程访问摄像头
  16. devise安装使用指南
  17. Linux部署docker容器(使用root用户登录)
  18. 运动世界校园刷跑的简单方法应用
  19. Java基础项目实战--大学生求职招聘信息网站系统
  20. OpenGL---PBO

热门文章

  1. Logaster让设计logo更简单
  2. 全球50大最重要互联网人物
  3. 贪心算法-活动安排问题
  4. CSP-S 2019 第二轮 DAY2 简单解析(含部分分代码)
  5. 垂直水平居中的几种实现方式
  6. tf.round(): 四舍六入五取偶
  7. Excel VBA高级编程 -自动去除重复项 自动求和
  8. Unexpected token o in JSON at position 1报错
  9. 《网络攻防》第七周学习总结
  10. 搜狗浏览器在高速模式下,右键点击才会出现“审查元素”