1. 背景

Bing搜索每天的背景图片有些比较适合做桌面,但是有的提供下载有的不提供下载。每天去点击下载又不太方便,所以第一次学习了一下python爬虫怎么写,写的很简单。

2. 相关技术

2.1 Python爬虫参考

2.2 Python正则表达式

2.3 解决登录问题

一些网站需要登录操作,应该是大部分网站都是登录操作的。

2.4 logging:内置日志库

3. 爬虫实现

爬虫分三个部分:请求,解析,保存。

下面只展示主要逻辑代码。完整代码参考Github。

3.1 请求脚本

import urllib.request

import re

import logging

def getHtml(url):

page = urllib.request.urlopen(url)

html = page.read()

if html:

logging.debug("Get Response:"+str(len(html)))

else:

logging.warning("Request failed!")

return html.decode('utf-8')

3.2 解析脚本

重点是解析脚本,这里定义了两种方法:一种通过正则表达式匹配,另一种使用BeautifulSoup解析文档树。通过文档书解析是原来通过下载页面来解析的,但是发现下载的页面与直接请求http://cn.bing.com/获得的响应是不同的,因为有js脚本做了后续处理。所以无法做爬虫解析。只能使用了正则表达式匹配,效果还好。

from bs4 import BeautifulSoup

import json

import re

import logging

def getJpg(html):

reg = r'(url:.{10,90}jpg)' //这里匹配包含"url:**jpg"的字符串,没写出更精确的正则表达式,只能写匹配10到90个字符了

logging.debug("Using re "+reg+" to get Jpg")

jpgre= re.compile(reg)

jpglist=re.findall(jpgre,html)

if jpglist:

logging.debug("Get jpg list("+str(len(jpglist))+"):"+str(jpglist))

jpgUrl = jpglist[0].split('"')[1]

imageUrl = host+jpgUrl

logging.info("Get jpg url:"+imageUrl)

return imageUrl

def bingParser(html):

#soup=BeautifulSoup(html,"html.parser")//直接解析响应就会有问题获取不到

soup=BeautifulSoup(open('Bing.html'),"html.parser") //最初通过下载的页面解析成功

print(soup.title)

print(type(soup.a))

print(soup.select('#bgDiv'))

style = (soup.select('#bgDiv')[0].attrs['style']).strip()

print(style)

json_style=json.dumps(style)

print(json_style)

imageurl=style.strip().split(';')[-3:-2]

#print(imageurl[0].split('"')[1])

imageUrl = (imageurl[0].split('"')[1])

#imageUrl = (imageurl[0].split(':')[1].strip().split('"')[1])

print(imageUrl)

return imageUrl

3.3 保存脚本

保存脚本是需要运行的脚本,所以其他脚本都在这里调用了。

import urllib.request

import urllib.parse

import parseHtml

import request

import logging

import sys

//定义日志

logging.basicConfig(level=logging.DEBUG,

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',

datefmt='%Y-%m-%d %H:%M:%S',

filename='bingcn.log',

filemode='a'

)

host="http://cn.bing.com"

logging.info("From:"+host)

html = request.getHtml(host)

imageurl = parseHtml.getJpg(html)

logging.info("Image url:"+imageurl)

fileName = imageurl.split('/')[-1:][0]

logging.info("Image file name:"+fileName)

def saveImg(imageURL,fileName):

url = (imageURL)

logging.info('Image file url:'+url)

#url=urllib.parse.urlencode(url)

u = urllib.request.urlopen(url)

data = u.read()

f = open(fileName, 'wb')

f.write(data)

logging.info("Save file :"+imageURL)

f.close()

saveImg(imageurl,fileName)

4. 运行

脚本针对python3环境写的,直接运行saveImage.py即可。

如果使用日志文件的方式,可以在当前目录下看到日志文件bingcn.log,保存的图片也在当前目录下。

james@james:~/code/hello-world/code/python/networkong/pycrowler/crowler_bingcn > python3 saveImage.py

2017-06-26 14:36:05 saveImage.py[line:19] INFO From:http://cn.bing.com

2017-06-26 14:36:06 request.py[line:12] DEBUG Get Response:126510

2017-06-26 14:36:06 parseHtml.py[line:91] DEBUG Using re (url:.{10,90}jpg) to get Jpg

2017-06-26 14:36:06 parseHtml.py[line:95] DEBUG Get jpg list(2):['url: "/az/hprichbg/rb/MadagascarLemurs_ZH-CN7754035615_1920x1080.jpg', "url:'\\/az\\/hprichbg\\/rb\\/CallanishSS_ZH-CN12559903397_1920x1080.jpg"]

2017-06-26 14:36:06 parseHtml.py[line:98] INFO Get jpg url:http://cn.bing.com/az/hprichbg/rb/MadagascarLemurs_ZH-CN7754035615_1920x1080.jpg

2017-06-26 14:36:06 saveImage.py[line:24] INFO Image url:http://cn.bing.com/az/hprichbg/rb/MadagascarLemurs_ZH-CN7754035615_1920x1080.jpg

2017-06-26 14:36:06 saveImage.py[line:26] INFO Image file name:MadagascarLemurs_ZH-CN7754035615_1920x1080.jpg

2017-06-26 14:36:06 saveImage.py[line:30] INFO Image file url:http://cn.bing.com/az/hprichbg/rb/MadagascarLemurs_ZH-CN7754035615_1920x1080.jpg

2017-06-26 14:36:06 saveImage.py[line:36] INFO Save file :http://cn.bing.com/az/hprichbg/rb/MadagascarLemurs_ZH-CN7754035615_1920x1080.jpg

python log壁纸_一个爬取Bing每日壁纸的python脚本相关推荐

  1. 【Python爬虫学习实践】多线程爬取Bing每日壁纸

    在本节实践中,我们将借助Python多线程编程并采用生产者消费者模式来编写爬取Bing每日壁纸的爬虫.在正式编程前,我们还是一样地先来分析一下我们的需求及大体实现的过程. 总体设计预览 首先,我们先来 ...

  2. Python3爬取Bing每日图片,并设置为电脑桌面

    文章目录 1 - 简述 2 - 核心代码 2.1 - 爬取BingImage 2.2 - 设置为桌面 2.3 - 设置为每日自动执行 3 - 完整代码 4 - 运行结果 作为鄙视链底层的"脚 ...

  3. 必应壁纸php,PHP 自动保存Bing 每日壁纸

    https://cn.bing.com 已经修复! 前段时间,写了个Bing随机壁纸API,Bing随机壁纸 API 有个朋友问我壁纸怎么保存下来的,其实这东西网上一搜一大把,用PHP/JAVA/Py ...

  4. python简直万能_一键爬取资源,Python简直太强大了!

    "用Python写个 爬虫小程序,每分钟可以发起几千次"点击"的动作,任手速再快也不可能赶得上,那抢中概率自然就高了." ▲爬虫自动抢鞋子 这么神! 于是,我认 ...

  5. python 生意参谋_如何爬取生意参谋数据?是不是违规操作?

    生意参谋是阿里巴巴为商家打造的一站式.个性化.可定制的商务决策体验平台.近期发现,有部分人员使用爬虫爬取生意参谋平台数据,影响商家的用户体验.到底是如何爬取生意参谋数据呢? 官方推荐淘宝.京东.拼多多 ...

  6. python数据分析工资_拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息...

    确定网页的加载方式是JavaScript加载 通过谷歌浏览器开发者工具分析和寻找网页的真实请求,确定真实数据在position.Ajax开头的链接里,请求方式是POST 使用requests的post ...

  7. 用Python给我写一个爬取网易云的音乐代码

    好的,为了爬取网易云音乐,我们需要使用一些第三方库来帮助我们处理网络请求和解析 HTML/XML 数据.在这里,我建议您使用 requests 库来发送网络请求和 Beautiful Soup 库来解 ...

  8. python log函数_求你别再花大价钱学 Python 之爬虫实战

    引子 Python 基本概念 Python 优势和劣势 优势 Python 的劣势 Python 安装设置 Python 基本语法 程序例子 Python 基本语法 Python 爬虫实现 爬虫相关 ...

  9. python协程gevent案例 爬取斗鱼图片过程解析 - python

    文章来源: 敏而好学论坛 嗨学网www.piaodoo.com 欢迎大家相互学习 分析 分析网站寻找需要的网址 用谷歌浏览器摁F12打开开发者工具,然后打开斗鱼颜值分类的页面,如图: 在里面的请求中, ...

最新文章

  1. 未来软件是什么样呢?数据库篇(转载)
  2. 国内油价今日将迎九连跌 出租车燃油费望调整
  3. idea mybatis插件_IntelliJ IDEA插件推荐(二)
  4. 实验三《实时系统的移植》 20145222黄亚奇 20145213祁玮
  5. easyui控件事件监听委托给jquery事件监听,keyup取最新值问题
  6. java 操作vss,java开发常用工具总结,java开发常用工具
  7. windows10 Build 10074版本上手体验(二)
  8. 思维导图ubuntu_Ubuntu——思维导图导安装和configuration area错误
  9. 混合整数规划线性规划——Matlab例程
  10. 《简明Python教程》--沈洁元
  11. PMP考试提分必刷题
  12. 北京大学软件与微电子学院嵌入式系统工程系
  13. Mybatis遇到No constructor found in ....的解决方法
  14. Word——如何在框框□里打打勾√
  15. python字符串字母怎么取出_Python需要从字符串中提取第一个和最后一个字母
  16. docker重启参数--restart=always的作用
  17. typora-数学符号
  18. lzo的正确c语言代码,LZO的问题
  19. win10系统重装之u盘装系统,u盘安装win10系统
  20. 如何自学单片机? 单片机怎么入门?

热门文章

  1. 平板电脑推荐 资深游戏玩家最爱的这款5G平板来了!
  2. 如何解决iCloud空间被Mac桌面和文稿占用太多的问题?
  3. 【ARM汇编子程序】求三个数的阶乘并求和
  4. 计算机主板外频,电脑装机小知识,了解外频和倍频的前身今世,掌握超频进阶小技巧...
  5. 三非本科渣渣2年面试100场成“面霸”,春招补招终斩获大厂offer,这样的Android体系面试必备!
  6. 面霸是如何练成的,我的无数次面试失败总结
  7. 力扣(LeetCode)390. 消除游戏(2023.01.23)
  8. 旷视科技Face++联手vivo掀起美学革命 AI智能助推vivo X23全方位进阶
  9. hashlib安装报错
  10. 全球及中国潮汐发电行业运营可行性及投资机会分析报告2021年版