爬取豆瓣王祖贤电影海报代码
爬虫实际上是用浏览器访问的方式模拟了访问网站的过程,整个过程包括三个阶段:打开网页、提取数据和保存数据。
在 Python 中,这三个阶段都有对应的工具可以使用。在“打开网页”这一步骤中,可以使用 Requests 访问页面,得到服务器返回给我们的数据,这里包括 HTML 页面以及 JSON 数据。在“提取数据”这一步骤中,主要用到了两个工具。针对 HTML 页面,可以使用 XPath 进行元素定位,提取数据;针对 JSON 数据,可以使用 JSON 进行解析。在最后一步“保存数据”中,我们可以使用 Pandas 保存数据,最后导出 CSV 文件。
Xpath定位
import os
import requests
from lxml import etree
from selenium import webdriver search_text = "王祖贤"
start = 0
limit = 15
total = 15 def download(img, title): dir = "D:\\数据分析\\python test\\query\\" + search_text + "\\" id = title.replace(u'\u200e', u'').replace(u'?', u'') .replace(u'/', u'or') if not os.path.exists(dir): os.makedirs(dir) try: pic = requests.get(img, timeout=10) img_path = dir + str(id) + '.jpg' fp = open(img_path, 'wb') fp.write(pic.content) fp.close() except requests.exceptions.ConnectionError: print('图片无法下载') def crawler_xpath(): src_img = "//div[@class='item-root']/a[@class='cover-link']/img[@class='cover']/@src" src_title = "//div[@class='item-root']/div[@class='detail']/div[@class='title']/a[@class='title-text']" for i in range(start,total,limit): request_url = "https://search.douban.com/movie/subject_search?search_text="+search_text+"&cat=1002&start="+str(i)driver = webdriver.Chrome() driver.get(request_url) html = etree.HTML(driver.page_source) imgs = html.xpath(src_img) titles = html.xpath(src_title) print(imgs,titles) for img, title in zip(imgs, titles): download(img, title.text) if __name__ == '__main__': crawler_xpath()
JSON解析
import requests
import json
query = '王祖贤'
''' 下载图片 '''def download(src, id):dir = './' + 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('图片无法下载')''' for 循环 请求全部的 url '''
for i in range(0, 22471, 20):url = 'https://www.douban.com/j/search_photo?q=' + query + '&limit=20&start=' + str(i)print(url)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}req = requests.g小菜鸡的技术之路et(url=url,headers=headers)html = req.text # 得到返回结果print(html)response = json.loads(html, encoding='utf-8') # 将 JSON 格式转换成 Python 对象for image in response['images']:print(image['src']) # 查看当前下载的图片网址download(image['src'], image['id']) # 下载一张图片
欢迎关注个人微信公众号:小菜鸡的技术之路。
爬取豆瓣王祖贤电影海报代码相关推荐
- python爬虫——爬取豆瓣热门电影海报生成html文件
环境 webbrowser urllib requests v2.21.0 实现功能 过程 1.查看豆瓣热门电影模块源码: 看到其所在class为list-wp,我们想通过urllib里面的reque ...
- 【实战2】爬取豆瓣Top250电影的海报
[实战2]爬取豆瓣Top250电影的海报 一. 项目目标分析 二. 完整代码 参考链接: https://www.bilibili.com/video/BV1ZJ411N7Fq?p=4 一. 项目目标 ...
- [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息
这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...
- python 爬取豆瓣top100电影页面
python 爬取豆瓣top100电影页面 运行结果截图: 代码: (原网站:https://movie.douban.com/top250) 1.将页面保存 避免多次访问 (登陆状态需页面cooki ...
- python爬取豆瓣排行榜电影(静态爬取)(二次爬取)
目录 python爬取豆瓣排行榜电影(静态爬取) 获取网站url 获取网站headers get请求访问url BeautifulSoup解析网站 爬取html数据 完整代码 python爬取豆瓣排行 ...
- scrapy爬取豆瓣top250电影数据
scrapy爬取豆瓣top250电影数据 scrapy框架 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. sc ...
- 爬虫实战(一)利用scrapy爬取豆瓣华语电影
爬虫第一个项目是爬取豆瓣华语电影,后面将对这部分数据进行分析. 本文也是发表于『运筹OR帷幄』微信公众号的<用数据带你了解电影行业-华语篇>的爬虫介绍篇. 1. 爬取思路 在观察了豆瓣每个 ...
- Python爬取豆瓣Top250电影中2000年后上映的影片信息
Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...
- python采用requests+bs4爬取豆瓣top250电影信息
爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...
最新文章
- springmvc集成oracle,SpringMVC整合druid
- C 虚函数表及多态内部原理详解
- 动态规划 —— 背包问题 P02 —— 完全背包
- FTL(FreeMarker)基础
- Python提取 Gprmax 3.0 的out文件数据
- try catch中getRequestDispatcher跳转
- Java进阶:SpringMVC数据请求全局过滤器
- 电池SOH仿真系列-基于LSTM神经网络的电池SOH估算方法
- 第九届大唐杯省赛知识梳理-5G协议与信令(20%)
- WinCC数据报表控件
- 【转】什么是Online Learning
- The7强大多功能模板Var9.16.0+基于WordPress
- 使用计算机用眼卫生,电脑族日常保护眼睛小常识
- 如何VUE写桌面应用(electron)
- 如何找回存储在DBeaver连接中的数据库密码
- 【耀杨闯荡华儿街】(面试官)曹阿门:给我讲讲多线程;耀杨:md心态崩了~
- 电脑定时清理微信数据
- 为什么说裁员18000只是微软计划的一部分
- [Ubuntu 18.04]公共DNS设置[/etc/resolv.conf]
- 无法安装冰点还原_电脑无法开机,重装系统太麻烦?不如试试直接备份恢复系统...