首页 > 其他分享 >正则爬取糗事百科热图

正则爬取糗事百科热图

时间:2022-11-14 10:34:16浏览次数:54  
标签:img title url 爬取 re 正则 print 热图 headers


正则爬取糗事百科热图:

第一步:找到网址

正则爬取糗事百科热图_正则

我们分析Header,是Get请求

下面开始撸代码:

import  requests
import json,time
import re,os

上面先导入库

没有的pip intstall 安装库,可以通过​​国内镜像源安装​​

主题函数:

def get_url(page):
url="https://www.qiushibaike.com/imgrank/page /{}/".format(page)
# url="https://www.qiushibaike.com/imgrank/"
headers={
'User - Agent': 'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 89.0.4389.82Safari / 537.36'
}
response=requests.get(url,headers=headers).text

获取整个页面的html

下面我们要用正则:

我们可以先cop 网页的elements

到本地,用正则测试,例如

import re
html='<div class="content"><span>妈妈带狗子出门,忘记带雨衣了——FB:J L</span></div>'
res='<div class="content".*?<span>(.*?)</span>.*?</div>'
resp=re.findall(res,html,re.S)
print(resp)

我们可以在本地进行测试:

下面是正则:

res='<div class="thumb".*?<img src="(.*?) alt.*?</div>'
resp = '<div class="content".*?<span>(.*?)</span>.*?</div>'
picture=re.findall(res,response,re.S)
title=re.findall(resp,response,re.S)
# print(title)
# print(picture)打印测试
for img,title in zip(picture,title):
img_url="https:"+img
title_name=title.strip()
# print(title)
# print(img_url,title)
time.sleep(1)
response=requests.get(url=img_url,headers=headers)
with open(path+'./%s.jpg'%title_name,'ab') as f:
f.write(response.content)
print(title+"图片下载成功!")

完整代码:

import  requests
import json,time
import re,os

def get_url(page):
path="./糗事百科"
url="https://www.qiushibaike.com/imgrank/page /{}/".format(page)
# url="https://www.qiushibaike.com/imgrank/"
headers={
'User - Agent': 'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 89.0.4389.82Safari / 537.36'
}
response=requests.get(url,headers=headers).text
res='<div class="thumb".*?<img src="(.*?) alt.*?</div>'
resp = '<div class="content".*?<span>(.*?)</span>.*?</div>'
picture=re.findall(res,response,re.S)
title=re.findall(resp,response,re.S)
# print(title)
# print(picture)
if not os.path.exists(path):
os.mkdir(path)
for img,title in zip(picture,title):
img_url="https:"+img
title_name=title.strip()
# print(title)
# print(img_url,title)
time.sleep(1)
response=requests.get(url=img_url,headers=headers)
with open(path+'./%s.jpg'%title_name,'ab') as f:
f.write(response.content)
print(title+"图片下载成功!")
if __name__ == '__main__':
for i in range(1,13):
time.sleep(2)
get_url(i)

我们上面可以用for循环实现翻页操做.

糗事百科正则爬取就完成了

效果图片:

正则爬取糗事百科热图_html_02


标签:img,title,url,爬取,re,正则,print,热图,headers
From: https://blog.51cto.com/u_15870497/5848494

相关文章

  • Python正则表达式入门
    Python正则表达式入门文章目录​​Python正则表达式入门​​​​1、在Python中使用正则表达式​​​​2、最基础正则表达式​​​​3、正则匹配函数​​​​正则表达式的字......
  • Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤
    Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤文章目录​​Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤​​​​背景:LOL这款游戏有着大量的玩家,这个游戏里......
  • Python爬虫之爬取绝对领域美女图片
    Python爬虫之爬取绝对领域美女图片第一步:导入模块:importrequestsfromlxmlimportetree第二步:定义函数:defget_url(start_url):response=requests.get(start_url)d......
  • re正则--匹配方法
    --re.match()方法语法:re.match(pattern,string,flags) 其中flags表示的标志位。有以下几种re.I忽略大小写re.L表示特殊字符集\w,\W,\b,\B,\s,\S依赖于当前环......
  • re-正则-表达式规则
    re正则表达式模式   ......
  • 双11,用Python爬取4000多条笔记本电脑的销售数据并分析
    双11,用Python爬取4000多条笔记本电脑的销售数据并分析2022年,大部分电子产品的销量都在下滑,比如手机,一方面,产品的创新和提升不足,另一方面,大部分人更愿意把钱存起来,降低生活中......
  • 【正则】964- 正则表达式的括号如何使用?
    最近再一次重温老姚大佬的《JavaScript正则表达式迷你书》,并将核心知识点整理一遍,方便复习。原书写得非常棒,建议看下原书啦。  地址:https://github.com/qdlaoyao/js-re......
  • Java用正则表达式提取字符串中的字母和数字
    最新碰到个需求,需要从一个字符串中提取所有的数字和字符串,花了一些时间研究了下正则和相关类库后解决了,特此记录下代码如下:publicStringextractNumAndLetter(Strings......
  • 爬取豆瓣TOP250
    实验1基于多线程的静态网页爬取项目1.实验目的(1)熟悉网页浏览器开发工具的使用;(2)掌握网页爬取requests库的使用;(3)掌握网页解析技术,例如Xpath、BeautifulSoup、re等;(4)......
  • 正则表达式 string.replaceAll替换花括号 报错illegal repetition near index 0
    1Stringregex="(\\$|\\#)\\{[^{}]*\\}";2List<WatcherTaskAgentFileMapping>watcherTaskAgentFileMappingList=agentFileQueryDao.queryWatcherAgentFileList(......