本文主要是介绍Python爬虫+ pyqt5(从零开始到爬取教务处新闻,课程表,成绩),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言:
刚开始以为Python爬虫很高深,其实,当你模仿其他人的代码,敲了一遍之后,你8成就可以理解Python的基本爬虫了。
无论是学习什么事情,刚开始就要准备好利器工具,那样我们才能开始我们的旅程。工欲善其事,必先利其器麻!
Python的安装:点击打开链接 我下载的是3.5 你也可以下载其他版本的
Pycharm(是IDE)安装:点击打开链接
pyqt5 安装:点击打开链接
另外最好用火狐浏览器,查看 调试好点。
(一)好啦,准备好了,就让我们写一个最基本爬虫,爬取一个网页的图片。
我们就爬这个网页的所有图片
先按F12,再按F5查看,如下图
再点击对应的网页
这样我们获取网页的基本信息已经都做完了,就可以敲代码了。注意:代码要对齐,不然pycharm会报错。
#导入正则模块 用于匹配
import re
#导入请求模块 向网页请求的
import urllib.request#通过url获取网页 def 这是一个函数定义头 getHtml函数名 url函数参数
def getHtml(url):""" 通过url获取html地址 #函数说明:param url::return: html"""#headers 网页的请求头 防止反爬虫(骗服务器,是浏览器在请求,而不是机器人在请求) 在对应的网页 按F12调试查看headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',}#请求 返回reqreq = urllib.request.Request(url, headers =headers)#打开req返回一个网页html = urllib.request.urlopen(req).read()return html#通过正则表达式来获取图片地址,并下载到本地
def getImg(html):"""根据reg获取图片,并下载到本地:param html::return: imglist"""# 定义图片正则 规则reg = r'src="(.+?\.jpg)"'#匹配imgre = re.compile(reg)#找到图片列表imglist = re.findall(imgre, html)#x图片编号x = 1for imgurl in imglist:print(imgurl)#通过urlretrieve函数把数据下载到本地的D:\\images,所以你需要创建目录urllib.request.urlretrieve(imgurl, './images/'+'%s.jpg'%x)x = x + 1return imglistdef get():html = getHtml("https://tieba.baidu.com/p/5680688545")#记得加上这句 不然会乱码 编码格式看网页源代码 大部分 utf-8 gbk json
html = html.decode('utf-8')print(html)print(getImg(html))if __name__ == "__main__":get()
里面加了好多注释,代码是很短的,实际代码也只有十几行。另外我忘了加入Sleep函数了,加上的话会变慢,不过这样能够保证持续爬取,如果过快爬取的话,服务器会认为你频繁访问而暂停你的请求。
会爬一个网页的图片就可以爬多个网页了。
其实很简单,只需要加工for循环 不断 改变gethtml里面的url的地址,不同的url对应不同的网页,就可以实现爬取不同网页的图片了。
下面我举个栗子,你们自己再试着去模仿下哈:
import re
import urllib.request
import urllib.error
from urllib.request import urlopen
import os
import operator
import time
#通过url获取网页
def getHtml(url):"""通过url获取html地址:param url::return: html"""# 用于模拟http头的User-agentheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',}req = urllib.request.Request(url, headers =headers)try:page = urlopen(req)except urllib.error as e:print(e)print(222)html = page.read().decode('utf-8')return html#通过正则表达式来获取图片地址,并下载到本地
def getImg(html):"""根据r
这篇关于Python爬虫+ pyqt5(从零开始到爬取教务处新闻,课程表,成绩)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!