1.   什么是网络爬虫?

在大数据时代,信息的采集是一项重要的工作,而互联网中的数据是海量的,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的。

网络爬虫(Web crawler)也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,可以自动采集所有其能够访问到的页面内容,以获取相关数据。

从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

2.   网络爬虫的作用

1.可以实现搜索引擎

我们学会了爬虫编写之后,就可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在采集回来的信息中进行检索,即实现了私人的搜索引擎。

如果想获取一个简单的网站信息该怎么做呢?

import requests

# 获取百度网站信息
r = requests.get('http://www.baidu.com') # 查看状态码
print(r.status_code) # 指定字符编码
r.encoding = 'utf-8' print(r.text)

首先我们要导入requests 库 并用 r.requests.get获取到百度网站的信息 然后使用 r.status_code 查看到当前的状态码 如果是200则表示获取成功

r.encoding 指定字符编码  最后调用 r.text 将获取的内容输出出来

执行一下 我们想要的结果就出来了

那想获取网站上的商品信息又该怎么办呢

首先我们找到一个网站 搜索一件商品 点击进去 复制他的链接

然后进行程序的编写 这里我们要用到 try 和 except 方法

import requests

url = 'https://item.jd.com/100008348542.html'

try:
r = requests.get(url)
r.raise_for_status() # 检测状态码如果是200则不报错 如果不是200 则抛出异常
# 获取字符编码
r.encoding = r.apparent_encoding
print(r.text[:1000]) except:
print("爬取失败")

显示结果

是不是很简单呢?

例2

import requests

url = 'https://www.amazon.cn/dp/B06XGXXDV9?ref_=Oct_DLandingSV2_PC_45268aee_0&smid=A26HDXW89ZT98L'

try:
kv = {"User-Agent": 'Mozilla5.0'}
r = requests.get(url, headers=kv)
# headers=kv 将自己请求头部信息更改为 kv这个字典的数据
# 若果不更改头部信息默认是以requests库的身份去访问的网站
# 有时候会导致获取信息的获取异常 我们吧头部信息该为 Mozilla5.0
# 就会让服务器认为我们是以用户的身份去访问的网站
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text)
print(r.request.headers)
except:
print("爬取失败")

如果访问一个网站信息时发现 信息没有提取出来 则有可能是访问的服务器 通过判断你的头部信息拒绝了你的访问 这时候我们就要更改自己请求头的信息了

修改前

修改后 User-Agent 被修改了

如果你想要输入一个内容 查看百度返回的结果 可以通过查看百度接口来进行获取

我们可以看到当你输入图片 上面的wd会跟着输入的改变而改变 我们通过这个可以得出 只要修改wd的值就可以查看到相应的内容

下面我们通过代码来实现一下百度的搜索

import requests

keyword=input("请输入你要查找的内容:")

try:
kv = {"wd":keyword,
"User-Agent": 'Mozilla5.0'
}
r = requests.get('http://www.baidu.com',kv)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失败")

显示结果 我们以len计算一下数据的长度就可以了

如果我们要获取网上的一张图片并将他保存在本地硬盘该怎么办呢?

首先我们鼠标右击复制图片地址

然后进行程序的编写

import requests
import os
#图片链接
url = 'http://b-ssl.duitang.com/uploads/item/201210/03/20121003220216_xTBdK.jpeg'
root = 'D://pics//'
path = root + url.split('/')[-1] try:
if not os.path.exists(root): #判断是否有这个目录 如果没有则创建一个
os.mkdir(root)
if not os.path.exists(path): #判断是否有这个文件如果没有 则从url链接上面获取
r = requests.get(url)
with open(path,'wb') as f:
f.write(r.content) #r.content 是文件的二进制返回内容 f.write(r.content) 将返回的二进制形式写到文件中
f.close()
print("文件保存成功")
else:
print("文件已存在")
except :
print("爬取失败")

然后产看D盘是否有这个文件

然后你就会发现图片已经保存在了本地 并且在pics目录下

pyhton 基础数据的爬取1的更多相关文章

  1. 爬虫(二)Python网络爬虫相关基础概念、爬取get请求的页面数据

    什么是爬虫 爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程. 哪些语言可以实现爬虫    1.php:可以实现爬虫.php被号称是全世界最优美的语言(当然是其自己号称的,就是王婆 ...

  2. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

    web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...

  3. Ajax数据的爬取(淘女郎为例)

    mmtao Ajax数据的爬取(淘女郎为例) 如有疑问,转到 Wiki 淘女郎模特抓取教程 网址:https://0x9.me/xrh6z 判断一个页面是不是 Ajax 加载的方法: 查看网页源代码, ...

  4. Python_记一次网站数据定向爬取实现

    记一次网站数据定向爬取实现 by:授客 QQ:1033553122 测试环境: Python版本:Python 3.4 Win7 请勿用于商业及非法用途,仅供学习研究用,否则后果自负 数据爬取场景 如 ...

  5. 爬虫--selenuim和phantonJs处理网页动态加载数据的爬取

    1.谷歌浏览器的使用 下载谷歌浏览器 安装谷歌访问助手 终于用上谷歌浏览器了.....激动 问题:处理页面动态加载数据的爬取 -1.selenium -2.phantomJs 1.selenium 二 ...

  6. 爬虫开发6.selenuim和phantonJs处理网页动态加载数据的爬取

    selenuim和phantonJs处理网页动态加载数据的爬取阅读量: 1203 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/ ...

  7. python爬虫---CrawlSpider实现的全站数据的爬取,分布式,增量式,所有的反爬机制

    CrawlSpider实现的全站数据的爬取 新建一个工程 cd 工程 创建爬虫文件:scrapy genspider -t crawl spiderName www.xxx.com 连接提取器Link ...

  8. (五)selenuim和phantonJs处理网页动态加载数据的爬取

    selenuim和phantonJs处理网页动态加载数据的爬取 一 图片懒加载 自己理解------就是在打开一个页面的时候,图片数量特别多,图片加载会增加服务器的压力,所以我们在这个时候,就会用到- ...

  9. 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)

    原文地址http://blog.csdn.net/qy20115549/article/details/52203722 本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平 ...

随机推荐

  1. vue-cli 3.0按需引入element-ui

    vue-cli 3.0脚手架初始化项目成功后,如果需要按需引入element-ui,按照官网的教程,会报如下错误: 这个是由于babel编译插件版本问题,需要安装最新的babel编译插件“@babel ...

  2. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之八:安装报表扩展及最新更新

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  3. SDWebImage4.0之后加载gif不显示的解决方案

    SDWebImage4.0之前 UIImageView *imgView = [UIImageView new]; imgView.contentMode = UIViewContentModeSca ...

  4. FLUME NG的基本架构

    Flume简介 Flume 是一个cloudera提供的 高可用高可靠,分布式的海量日志收集聚合传输系统.原名是 Flume OG (original generation),但随着 FLume 功能 ...

  5. PHP匿名函数、闭包、function use

    匿名函数,也叫闭包函数(closures) ,允许临时创建一个没有制定名称的函数.最常用作回调函数(callback)参数的值. 闭包函数也可以作为变量的值来使用.PHP将会自动把此种表达式转换成内置 ...

  6. Html table 内容超出显示省略号

    内容超出显示省略号: <html> <style> table { table-layout: fixed; width: 100%; } table, th, td { bo ...

  7. d-堆

    二叉堆因为实现简单,因此在需要优先队列的时候几乎总是使用二叉堆.d-堆是二叉堆的简单推广,它恰像一个二叉堆,只是所有的节点都有d个儿子(因此,二叉堆又叫2-堆).下图表示的是一个3-堆.注意,d-堆要 ...

  8. (办公)mysql索引

    举个例子:20多w的数据,查询语句,什么都没有查到,既没有走到主键索引,普通索引,什么都没走,走的就非常慢. 下面要加索引,并了解mysql索引的作用,以及如何使用他们索引. 介绍MysqlMySQL ...

  9. 手机号码生成器app有吗,怎么使用的呢?

    手机号码生成器app是有的,他有手机号码生成器安卓版,也有手机号码生成器苹果版的.很多人会误解他的功能以为是拿来生成号码来接验证码的,其实他不是拿来接短信的.它是用来给别人做营销找客沪的找客源的,接不 ...

  10. Codeforces Round #578 (Div. 2)

    Codeforces Round #578 (Div. 2) 传送门 A. Hotelier 暴力即可. Code #include <bits/stdc++.h> using names ...