爬取豆瓣电影
2019-02-25 16:14:40来源:博客园 阅读 ()
1:创建爬虫文件,获取url地址
2:使用request获取第一页的请求信息
# -*- coding:utf-8 -*- #作者: baikai #创建时间: 2019/2/24 14:58 #文件: douban_spider.py #IDE: PyCharm import requests from bs4 import BeautifulSoup url="https://movie.douban.com/top250" wb_data=requests.get(url) # 获取网页文本信息 soup=BeautifulSoup(wb_data.text,'lxml') # 从soup中提取我们想要的信息 titles=soup.select('div.hd>a') rates=soup.select('span.rating_num') imgs=soup.select('img[width="100"]') for title,rate,img in zip(titles,rates,imgs): data={ 'title':list(title.stripped_strings), 'rate':rate.get_text(), 'img':img.get('src') } print(data)
3:获取多页的请求信息
# -*- coding:utf-8 -*- #作者: baikai #创建时间: 2019/2/24 14:58 #文件: douban_spider.py #IDE: PyCharm import requests from bs4 import BeautifulSoup urls=['https://movie.douban.com/top250?start=n&filter=' for n in range(0,250,25)] for url in urls: wb_data=requests.get(url) # 获取网页文本信息 soup=BeautifulSoup(wb_data.text,'lxml') # 从soup中提取我们想要的信息 titles=soup.select('div.hd>a') rates=soup.select('span.rating_num') imgs=soup.select('img[width="100"]') for title,rate,img in zip(titles,rates,imgs): data={ 'title':list(title.stripped_strings), 'rate':rate.get_text(), 'img':img.get('src') } print(data)
4:下载电影图片地址到本地
# -*- coding:utf-8 -*- #作者: baikai #创建时间: 2019/2/24 14:58 #文件: douban_spider.py #IDE: PyCharm import requests from bs4 import BeautifulSoup i=0 urls=['https://movie.douban.com/top250?start=n&filter=' for n in range(0,250,25)] for url in urls: wb_data=requests.get(url) # 获取网页文本信息 soup=BeautifulSoup(wb_data.text,'lxml') # 从soup中提取我们想要的信息 titles=soup.select('div.hd>a') rates=soup.select('span.rating_num') imgs=soup.select('img[width="100"]') for title,rate,img in zip(titles,rates,imgs): data={ 'title':list(title.stripped_strings), 'rate':rate.get_text(), 'img':img.get('src') } # 保存图片到本地 i+=1 fileName=str(i)+'、'+data['title'][0]+''+data['rate']+'分.jpg' pic=requests.get(data['img']) with open('E:/Envs/douban/douban_imgs/'+fileName,'wb')as photo: photo.write(pic.content) print(data)
5:爬取豆瓣热门美剧存储到mongodb中
将json数据转换为字典,然后根据键subjects循环取出里面的值
取出我们想要的数据
# -*- coding:utf-8 -*- #作者: baikai #创建时间: 2019/2/24 20:06 #文件: douban_tv_us.py #IDE: PyCharm import requests,json url='https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=0' response_data=requests.get(url) # 将json数据转换为字典类型并根据键名循环取出值 json_data=json.loads(response_data.text) # 查看键名 # print(json_data) for tv in json_data['subjects']: # print(tv) # 取出我们需要的数据 data={ 'rate':tv['rate'], 'title':tv['title'], 'img_url':tv['cover'], 'id':tv['id'], # 自定义一个标志 'tag':"美剧" } print(data)
获取多页数据
# -*- coding:utf-8 -*- #作者: baikai #创建时间: 2019/2/24 20:06 #文件: douban_tv_us.py #IDE: PyCharm import requests,json # url='https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=0' # 这里的200可以修改为更高数字,目前只爬取200条数据 urls=['https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start='+str(n) for n in range(0,200,20)] for url in urls: response_data=requests.get(url) # 将json数据转换为字典类型并根据键名循环取出值 json_data=json.loads(response_data.text) # 查看键名 # print(json_data) for tv in json_data['subjects']: # print(tv) # 取出我们需要的数据 data={ 'rate':tv['rate'], 'title':tv['title'], 'img_url':tv['cover'], 'id':tv['id'], # 自定义一个标志 'tag':"美剧" } print(data)
保存数据到mongodb数据库里面
# -*- coding:utf-8 -*- #作者: baikai #创建时间: 2019/2/24 20:06 #文件: douban_tv_us.py #IDE: PyCharm import requests,json,pymongo # url='https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=0' # 这里的200可以修改为更高数字,目前只爬取200条数据 client=pymongo.MongoClient(host='localhost',port=27017) db=client.db_bk collection = db.douban urls=['https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start='+str(n) for n in range(0,200,20)] for url in urls: response_data=requests.get(url) # 将json数据转换为字典类型并根据键名循环取出值 json_data=json.loads(response_data.text) # 查看键名 # print(json_data) for tv in json_data['subjects']: # print(tv) # 取出我们需要的数据 data={ 'rate':tv['rate'], 'title':tv['title'], 'img_url':tv['cover'], 'id':tv['id'], # 自定义一个标志 'tag':"美剧" } collection.insert_one(data) print(data)
原文链接:https://www.cnblogs.com/bkwxx/p/10426182.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:python 装饰器模拟京东登陆
下一篇:phthon中的open函数模式
- 使用scrapy框架爬取全书网书籍信息。 2019-08-13
- python爬虫学习之爬取超清唯美壁纸 2019-08-13
- xpath+多进程爬取八零电子书百合之恋分类下所有小说。 2019-08-13
- xpath+多进程爬取全书网纯爱耽美类别的所有小说。 2019-08-13
- 电影天堂爬虫 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash