当前位置: 首页 > wzjs >正文

网站开发总结与未来展望南昌搜索引擎优化

网站开发总结与未来展望,南昌搜索引擎优化,招聘网站做两份简历,手机做网站公司有哪些目录 一、网络爬虫 1、基本的爬虫 2、获取URL 3、查找网页源码关键字 4、代码实现 二、requests库 1、requests的优势和劣势 2、获取网页的其他库 (1)selenium库 (2)pyppeteer库 三、pyppeteer库 1、pyppeteer库的来历…

目录

一、网络爬虫

1、基本的爬虫

2、获取URL

3、查找网页源码关键字

4、代码实现

二、requests库

1、requests的优势和劣势

2、获取网页的其他库

(1)selenium库

(2)pyppeteer库

三、pyppeteer库

1、pyppeteer库的来历

2、pyppeteer库的工作原理

3、pyppeteer相关环境安装

四、协程

1、概念

2、注意事项

五、用pyppeteer获取网页


一、网络爬虫

网络爬虫,简称爬虫,它可以用来在网络上搜集一些数据(比如在搜索引擎上),也可以模拟浏览器的快速操作(比如我们可以用爬虫来实现抢课)

1、基本的爬虫

一个基本的爬虫写法如下:

(1)首先手动找出我们想要获取的网址(URL)

(2)在浏览器中搜索这个网址,查看网页的源代码,在源代码中找出我们想要的内容的字符串的模式(比如我们想要查找一些图片,在网页源码中,图片都有一些固定的关键字,我们通过抓取这些关键字,就可以获取图片)

(3)在程序中我们用URL得到对应的网页

(4)再根据程序中的正则表达式或者BeautifulSoup库来查找关键字,得到对应的内容并保存

2、获取URL

我们先在浏览器上搜索一个关键字:

我们观察这个网页对应的URL:

可以发现,在这个URL中,有一部分是“q = 乐高”,我们就可以猜想,是不是只要把q后面的文字改成我们想要搜索的关键字,就可以到达对应的页面?

我们直接在URL上把q后面的关键词改成“猫”,然后按下回车:

发现果然跳转到了猫的搜索页面!

这就意味着我们可以在代码中,通过修改q后面的数据,来到达对应的目标页面

3、查找网页源码关键字

当我们到达了目标页面,我们想要抓取几个图片,就需要通过页面源码的关键字:

我们在这个“猫”的搜索页面随便找一个图片,右键,选择“复制图像连接

我们会发现th(略缩图),id等具有标志性的东西,这些都指明了这可能是一个图片

当然,如果看不出来我们可以多复制几个图片的链接,来寻找共同点:

不难发现,很多图片都有/th/id/OIP-这一部分,这可能就是图片链接的共同特点:

右击网页空白处,点击“查看网页源码”,按ctrl + F , 

我们把这串字符复制进去:

按下回车,就能看见在源码的地方,很多处都被标记了这个关键字符串,我们就可以根据这个来爬取想要的图片;

4、代码实现

我们来找一个专门练习爬虫的页面来爬取几个图片(很多网页有反爬技术,最最基础的爬虫代码难以成功)

import re   #用来使用正则表达式
import requests     #用于HTTP请求
import os       #操作文件目录等def getHTML(url):       #用于获取目标页面的HTMLfakeHeader = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edg/81.0.416.77'}#定义了一个字典,用来模拟浏览器的请求头,欺骗浏览器try:r = requests.get(url, headers=fakeHeader)#发送一个GET请求到指定的url,并使用我们的假头部r.encoding = r.apparent_encoding#设置编码格式return r.text       #返回网页的HTML内容except Exception as e:print(e)return ""#------------------------以上内容可以固定的直接使用------------------------def getPicturePro(n):base_url = "https://spiderbuf.cn"   #基础的路径url = "https://spiderbuf.cn/web-scraping-practice/scraping-images-from-web"     #目标网页的URL(就是包含图片的)html = getHTML(url)     #调用函数,获取目标页面的HTML内容pt = r'<img[^>]+src="([^"]+)"'      #正则表达式,用于找到HTML里面的img标签的src属性的值i = 0   #图片个数(方便命名)for x in re.findall(pt, html):      #使用正则表达式pt找到html中所有符合的图片路径if x.startswith("/"):x = base_url + x     # 检查是否是相对路径,并转换为完整路径if not (x.lower().endswith(".jpg") or x.lower().endswith(".png")):      #拼接好后,如果不是jpg或png的图片,跳过不要continuetry:print(x)    #输出经过层层筛选的图片路径r = requests.get(x, stream=True)    #发送GET请求,获取图片,并以流式下载,防止一次性到内存pos = x.rfind(".")      #找到文件扩展名的起始位置if not os.path.exists(r"D:\学习\Python\temp"):os.makedirs(r"D:\学习\Python\temp")       #若不存在该目录就创建该目录f = open(r"D:\学习\Python\temp\{0}{1}{2}".format("image", i, x[pos:]), "wb")#打开该目录,并且以image和i来命名f.write(r.content)      #把图片写入文件f.close()except Exception as e:print(f"Error downloading {x}: {e}")    #若报错就返回错误信息i += 1getPicturePro(1)    #传入参数,表示开始执行

输出:

我们再看看文件夹:

二、requests库

在上面的代码中,我们可以看见,requests库的作用是用来发送HTTP请求的,可以完成大量的网络层面的任务

1、requests的优势和劣势

①优势:速度快,且安装简单,我们只需要使用pip命令就能安装requests库,很容易把自己的代码分享给别人使用,即共享性强

②劣势:requests库很容易被反爬虫手段屏蔽,可能一个有一点反爬虫手段的网页就能把这个代码屏蔽掉(比如我们用上面的代码去爬百度的搜索图片,是不能成功的,会被反爬),而且不能获取JavaScript的生成的动态网页

2、获取网页的其他库

面对刚刚上面requests的缺陷,我们在Python中,也提供了很多库来弥补它的不足

(1)selenium库

selenium库虽然比requests库更强一些,但是它的速度很慢,而且已经被许多网站反爬,可能还是无法成功

(2)pyppeteer库

速度很快,而且目前还没有被很多网站反爬,是一个比较好的选择

三、pyppeteer库

1、pyppeteer库的来历

pyppeteer是puppeteer的Python版本,而puppeteer是谷歌公司推出的可以控制Chrome浏览器的一套编程工具

2、pyppeteer库的工作原理

①启动一个浏览器Chromium,用浏览器装入网页,并且浏览器可以用无头模式(隐藏模式)或者显式模式启动(就是在执行爬取操作的时候用户能否看见浏览器操作页面的具体过程)

②从浏览器中可以获得网页的源代码,若网页就JavaScript程序,获得到的就是JavaScript被浏览器执行后的网页源码

③pyppeteer可以向浏览器发送命令,模拟用户在浏览器上的键盘,鼠标等操作

④selenium和pyppeteer的工作原理相同

3、pyppeteer相关环境安装

我们先在cmd窗口用pip命令下载pyppeteer

pip install pyppeteer

(要求Python版本在3.6及3.6以上)

当然,我们上面提到,我们需要启动一个特殊的浏览器Chromium,所以我们需要下载它:

在安装之前,我们需要确定我们安装了Node.js

安装官网:Node.js — 在任何地方运行 JavaScript

进入之后,我们点击下载LTS版本的(更加稳定)

在安装完成后,我们可以在cmd窗口检查一下是否安装完成:

node -v
npm -v

若安装成功,应该会类似如下:

安装完成之后,我们输入以下命令来安装:

npx @puppeteer/browsers install chrome@stable

在上图中的第六行,显示了安装的位置,我们定位到具体的目录,找到exe文件,可以创建一个快捷方式到桌面:

四、协程

1、概念

协程就是在代码中,前面加了async的函数

async def scy() :return 0

在调用协程时,必须在前面添加await

    await scy()

2、注意事项

(1)协程只能在协程里面调用,也就是说await关键字只能出现在协程里面,出现在外面就会报错!

(2)协程是一种特殊的函数,多个协程可以并行

(3)pyppeteer中的所有函数都是协程

五、用pyppeteer获取网页

代码如下:

import asyncio      #是Python的异步 I/O 框架,用于编写单线程并发代码
import pyppeteer as pyp#通过输入的url,获取指定的HTML内容
async def getHTML(url) :    #构造一个异步函数browser = await pyp.launch(headless = False , executablePath=r'C:\Users\23639\AppData\Local\Google\Chrome\Application\chrome.exe')    #启动一个浏览器,headless就是无头模式,设置成False就会显示浏览器,反之就不会#executablePath指明了Chrom浏览器的可执行路径page = await browser.newPage()      #等打开了浏览器,再在浏览器中获取我们想要的页面await page.setUserAgent('Mozilla/5.0 (Windows NT 6.1; Win64;  x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 safari/537.36')#模拟浏览器的请求头await page.evaluateOnNewDocument(' () => Object. defineProperties (navigator, { webdriver: {get:()=> false } })}')#页面在加载的时候会被执行里面JavaScript代码,目的是防止浏览器检测自动化工具await page.goto(url)    #导航到指定的URLtext = await page.content()     #获取页面的HTML代码await browser.close()   #关闭浏览器return text     #返回text内容def getHTMLpro(url) :return asyncio.run(getHTML(url))   #返回页面的HTML内容HTML_result = getHTMLpro("https://cn.bing.com")   #调用函数
print(HTML_result)

执行结果:

这就是把我们输入的那个URL的网页给爬取了下来,如果把这个复制到一个文本文档中,把后缀改成.html,就是我们想要的那个页面

以上就是Python网络爬虫设计(一)的全部内容:)

http://www.dtcms.com/wzjs/201222.html

相关文章:

  • 整站网站优化百度免费注册
  • 西宁市网站设计关键词优化是怎样收费的
  • 梵讯企业网站建设游戏推广怎么快速拉人
  • 个人可以做导航网站吗最近大事件新闻
  • 公司微网站怎么做的好网站注册域名
  • 免费看电视剧网站2020seo工程师招聘
  • 免费建设手机网站企业网站优化
  • wordpress运行环境要求点金推广优化公司
  • 网站设计兼职网站建设策划书
  • 网站建设怎么弄市场营销策略有哪4种
  • 什么软件可以做dj视频网站百度快照投诉中心人工电话
  • 一个人免费视频在线观看bd免费seo软件
  • 他人委托我做网站视频推广渠道有哪些
  • 网站开发语言有哪几种网站维护合同
  • 宠物用品技术支持 东莞网站建设seo 服务
  • 如何做网站做网站需要多少钱百度推广找谁做
  • 工程公司起名广州seo搜索
  • 美工做网站尺寸多少钱上海seo培训
  • 软件开发各阶段产生的文档seo建站优化推广
  • 中国小康建设网 是个什么网站网络营销的三大基础
  • 苏州建设网站公司女排联赛最新排行榜
  • wordpress玻璃质感主题太原seo关键词排名优化
  • 做网站类型免费下载百度软件
  • 北京手机网站搭建多少钱网络营销公司哪家好
  • dw怎么做班级网站东莞seo建站投放
  • 网站的日常维护热点时事新闻
  • 哪个网站可以做汽车评估济南网络优化网址
  • 门户网站建设与开发百度在线客服中心
  • 做图片网站 服务器西安seo专员
  • 网站公司维护2023网站分享