用python从豆瓣爬取王祖贤的照片

编程入门 行业动态 更新时间:2024-10-09 06:25:39

用python从<a href=https://www.elefans.com/category/jswz/34/1767641.html style=豆瓣爬取王祖贤的照片"/>

用python从豆瓣爬取王祖贤的照片

发现实战真的是最好的学习方法!

语言:python
IDE:PyCharm

前期准备:

安装好python、chromedriver、浏览器XPath Helper插件

这次演示爬取json格式的和html格式分别的处理方法

首先先看json格式的

先打开豆瓣,搜索“王祖贤”->选择图片->找到请求的url

我们访问这个url,发现返回的数据是json格式的

然后看html格式的

访问这个url:movie.douban,然后搜索 王祖贤,通过查看源码,了解结构,然后用XPath Helper插件做试验,按住ctrl+shift+x 同时鼠标点击王祖贤图片,根据XPath的语法,写表达式,如下:

介绍完毕后,直接上代码:

import requests
import json
# lxml是一个流行的解析库,使用的是Xpath语法,可以解析HTML
from lxml import etree
from selenium import webdriverquery = '王祖贤'
downloadPath = 'D:/workspace/study/python/text_classification/testdata/photos/'
# chromedriver需要配置环境变量,查看网上资料说建议放到python的Scripts目录下
chromedriverPath = 'D:/devsoft/python/Scripts/chromedriver'''' 下载图片 '''
def download(src, id):dir = downloadPath + str(id) + '.jpg'try:pic = requests.get(src, timeout=10)fp = open(dir, 'wb')fp.write(pic.content)fp.close()except requests.exceptions.ConnectionError:print('图片无法下载')# 数据是json格式
def getPhotos():''' for 循环 请求全部的 url '''for i in range(0, 200, 20):url = '=' + query + '&limit=20&start=' + str(i)html = requests.get(url).text  # 得到返回结果response = json.loads(html, encoding='utf-8')  # 将 JSON 格式转换成 Python 对象for image in response['images']:print(image['src'])  # 查看当前下载的图片网址download(image['src'], image['id'])  # 下载一张图片# 数据是 html格式,有时候网页会用 JS请求数据,只有等JS都加载结束后,才能获取完成的html,但xpath不受限制
def getMoviePhotos():url = '=' + query + '&cat=1002'driver = webdriver.Chrome(chromedriverPath)driver.get(url)# 初始化html = etree.HTML(driver.page_source)# 使用xpath helper, ctrl+shit+x 选中元素# xpath 语法 .aspsrc_xpath = "//div[@class='item-root']/a[@class='cover-link']/img[@class='cover']/@src"title_xpath = "//div[@class='item-root']/div[@class='detail']/div[@class='title']/a[@class='title-text']"srcs = html.xpath(src_xpath)titles = html.xpath(title_xpath)# zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,返回由元祖组成的对象。优点是节约内存# 参考 .htmlfor src, title in zip(srcs, titles):# join 字符串拼接print('\t'.join([str(src), str(title.text)]))download(src, title.text)driver.close()getPhotos()
getMoviePhotos()

然后执行后,在文件夹中就能看到下载的图片了

更多推荐

用python从豆瓣爬取王祖贤的照片

本文发布于:2024-02-14 14:42:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763843.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:豆瓣   照片   python   王祖贤

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!