Python爬取HTTPS网站的图片

tech2022-09-02  114

学习python已经差不多三个月了,断断续续没有目标得学着,python上手确实快,也很迅速的迷上了python,而且自己之前接触过web前端,比较片面的学习过js,有一些基础。在pygame上我自闭了几个星期后决定转向先学习python的爬虫等其他的比较好玩的模块。下面就是爬取一个HTTPS协议的一个网页(特定页),主要使使用了正则表达式和beautifulsoup4结合来获取到图片的url(其中的for循环拆分索引和值也很关键,使其能遍历,分析其网页图片结构,发现获取到的url不是像其他网站带上域名的,我们要为其图片的url添加上域名,详细请看源代码。)以及使用selenium模块模拟浏览器行为从而增加文章的访问量,这个网站不是通过requests请求就能增加其访问量,可能是没有触发JS脚本吧。源码的注释我也写得比较少,哎呀,我比较懒啦,不好意思啊,有基础知识认真看的话就能看得懂了,毕竟都是比较简单的语法,就剩语义问题了,谷歌百度分分钟解决,啦啦啦,挨打!

python爬虫网页的基本流程:

其实可以将url请求响应分为两步,一步是请求,一步是响应

1.首先选取一部分精心挑选的种子URL。 2.将这些URL放入待抓取URL队列。 3.从待抓取URL队列中读取待抓取队列的URL,解析DNS,并且得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。 4.分析已抓取URL队列中的URL,从已下载的网页数据中分析出其他URL,并和已抓取的URL进行比较去重,最后将去重过的URL放入待抓取URL队列,从而进入下一个循环。(我这个例子并没应用)

源代码如下:

import requests from bs4 import BeautifulSoup from urllib import request import ssl import re,os import time import urllib3 from selenium import webdriver y = 0 path= r"F:\text" os.makedirs('D:\\zytupian',exist_ok=True) times = time.strftime("%Y-%m-%d %H-%M-%S") headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)\ AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'} #伪装成浏览器客户端来欺骗网页的JS识别程序 ssl._create_default_https_context = ssl._create_unverified_context def download_page(url): print('start-getsuperhtml') with request.urlopen(url) as f: print('Status:', f.status, f.reason) for k, v in f.getheaders(): #取得服务器响应一个 HTTP 请求所发送的所有头信息 print('%s: %s' % (k, v)) data = requests.get(url,headers=headers,verify = False) print(type(data)) print('连接成功') return data def get_pic_list(html): soup = BeautifulSoup(html.content,'lxml',from_encoding='utf-8') print(soup) reg = r'orisrc="(.*?)\.jpg"' pattern = re.compile(reg) pic = soup.find_all('p', class_='vsbcontent_img') pic = str(pic) imglist = re.findall(pattern,pic ) print(imglist) for k,v in enumerate(imglist): newurl = ('https://www.zjpc.net.cn%s'%imglist[k]+'.jpg') print(newurl) #requests.adapters.DEFAULT_RETRIES = 5 #重新连接URL五次 #s = requests.session() #s.keep_alive = False image = requests.get(newurl, headers=headers,verify = False) with open( path +'\\'+ str(k)+'.jpg', 'wb') as file: # content:图片转换成二进制,进行保存。 file.write(image.content) print('下载成功 ') print('ojbk') url = 'https://www.zjpc.net.cn/info/1041/3935.htm' html = download_page(url) get_pic_list(html) driver = webdriver.Chrome() driver.get('https://www.zjpc.net.cn/info/1041/3935.htm') for i in range(52000): driver.refresh() driver.quit()
最新回复(0)