基于Python爬虫技术分析

(整期优先)网络出版时间:2023-10-15
/ 2

基于Python爬虫技术分析

吴泳龙

重庆机电职业技术大学,重庆 404100

摘要:随着信息技术的发展,网络数据成为一种重要资产,如何快速有效地提取和分析数据是目前该研究领域的热点。应用Requests技术分别开发了商品评论、百度贴吧图片爬虫,优化了爬虫算法,并为用户提供了有效的信息参考。下面本文就Python爬虫技术进行简要探讨。

关键词:Python;爬虫技术;

1 爬虫技术介绍

使用Requests、Scrapy和Selenium技术开发的网络爬虫,由于抓取的原始数据格式包含HTML、XML和JSON,因此对目标数据的获取要辅以其他技术解析并持久化保存。

1.1 Requests技术

Requests技术属于爬虫基础性工具包,它模拟人输入网址向服务器递交网络请求,实现自动爬取HTML网页页面信息的功能。根据HTTP协议对资源的六大操作方法,Requests配备对应的GET、POST、HEAD、PUT、PATCH、DELETE六个基础方法和一个REQUEST通用方法,具有HTTP连接池自动化、持久Cookie会话、SSL认证等基本功能。

1.2 Selenium技术

Selenium技术是一个基于Web应用程序且支持浏览器驱动的开源自动化测试框架,其运行过程就是一个可视化地模拟人输入网址、滚动鼠标、点击等动态的操作过程,能够对Chrome、Firefox、IE等浏览器中的对象元素进行定位、窗口跳转及结果比较等操作,具有执行网页JS加载、Ajax动态异步等技术,能做到可见即可爬,支持Python、Java、C#主流编程语言二次开发。

1.3 Scrapy技术

Scrapy技术是一个网站数据爬取和结构性数据提取的应用框架,包含引擎、调度器、下载器、解析爬虫、项目管道五个模块和下载器、解析爬虫两个中间件。该技术框架已设计了爬虫通用的数据和业务接口,方便根据业务需求聚焦爬取、解析、下载、存储等操作。

1.4 其他辅助技术

网络爬虫爬取初始数据后需要进行解析,常用的技术如下:(1)Xpath库,它能够对特定数据进行定位,以更好地获取特定元素,通常存储在XML文档中,在一定程度上起着导航作用。(2)RE正则表达式库,它通过规定一系列的字符及符号来进行数据筛选,实现图片、视频和关键字的搜索,进而实现信息的爬取。(3)BS4库,它运用HTML解析策略,把HTML源代码重新进行格式化,方便使用者对其中的节点、标签、属性等进行操作,完成网站数据的抓取、筛选操作。(4)JSON库,它是一种轻量级的数据交换格式,采用对象和数组的组合形式表示数据,用于将数据对象编码为JSON格式进行输出或存储,再将JSON格式对象解码为Python对象。

2 网页爬虫

2.1 爬取网站上的相关信息:爬取网站“京东”的首页,并且输出到文件中运用爬虫技术的一般流程,按照要求,运用 Python 提供的相关库的函数,按照步骤完成。

相关的步骤及代码如下。

# 导入 requests 库

import requests

# 请求的 URL

url="https://www.jd.com/index/index.html"

# 请求的报头

headers ={"User -Agent":"Mozilla/5.0 (Windows NT 10.0;

WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/

51.0.2704.103 Safari/535.1 "}

# 发送 GET 请求,返回响应对象

response=requests.get(url, headers=headers)

# 输出响应的内容

print(response.text)

# 运行结果(部分内容)如下。

京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!

initial-scale=1.0, maximum-scale=1.0, user-scalable=yes"/>

href = "//misc.360buyimg.com/mtd/pc/index_2019/1.0.1/

static/css/first-screen.chunk.css" rel="stylesheet"/>

href = "//misc.360buyimg.com/mtd/pc/index_2019/1.0.1/

static/css/index.chunk.css" rel="stylesheet"/>

window.point.css = new Date().getTime()

网站导航

手机京东

href="https://fresh.jd.com/"

1X36PoLQQ6JYgrLusHZpfowpxpc/index.html">电动车十大品牌排行榜

href = "//pro.m.jd.com/mall/active/

3uxWVvqh2dmwN2eLbqDfGj6BBoAk/index.html">台铃电动车

2.2 爬取网站上的图片

爬取网站“豆瓣”首页的电影图片,并且输出到文件中编写的代码及步骤如下。

import urllib.request

import re

url = 'https://movie.douban.com/top250'

request = urllib.request.Request(url)

request.add_header('User-Agent',

'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/

537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36')

response = urllib.request.urlopen(request)

buf = response.read()

buf = str(buf, encoding='utf-8')

# 获取所有图片 url 地址列表

listurl = re.findall(r'http.+\.jpg', buf)

print(listurl)

i = 1

for url in listurl:

f = open(str(i) + '.jpg', 'wb+')

req = urllib.request.urlopen(url)

buf = req.read()

f.write(buf)

i += 1

# 运行结果,所爬取的图片(部分)如图 1。

图 1 爬取的图片

2.3 爬取相关的网页

爬取网站“百度”上带有关键词”学习强国”的相关网页,并且输出到文件中编写的代码及步骤如下。

import requests

url="http://www.baidu.com"

param={"wd":"学习强国"}

headers ={"User -Agent":"Mozilla/5.0 (Windows NT 10.0;

WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/

51.0.2704.103 Safari/535.1 "}

response =requests.get (url,params =param,headers =headers)

print(response.text)

# 运行过程如图 2,运行结果(部分内容)如下。

src = "https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/

superman/js/lib/jquery -1 -edb203c114.10.2.js" ><

script type="text/javascript"

src = "https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/

superman/js/lib/esl -d776bfb1aa.js" >

list=$.extend({},s_domain.ssllist);$.each(list,function(i,e){if(list[i].indexOf("https://")<0){list[i]="https://"+list[i]}});var

get=function(url){if(s_domain.protocol=="http:"){return url}var

reg=/^(http[s]?:\/\/)?([^\/]+)(.*)/,matches=url.match(reg);url=list.

hasOwnProperty(matches[2])&&list[matches[2]]+matches[3] ||

url;return url},

defer src="//hectorstatic.baidu.com/cd37ed75a9387c5b.js">

script>