爬取豆瓣TOP250

  1. from requests_html import HTMLSession
  2. #新建一个html文件,将相应的代码放入,运行查看结果,如果页面全部渲染则直接根据页面信息获得数据;
  3. #如果指定部分没有代码,则是通过ajax提交渲染的结果,需要通过控制台找到指定的后台接口
  4. #session=HTMLSession()
  5. # r=session.get('https://movie.douban.com/top250')
  6. # print(r.text)
  7. class douban250():
  8. def __init__(self):
  9. self.session=HTMLSession()
  10. #请求头,根据请求网页决定是否需要
  11. self.headers = {
  12. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
  13. }
  14. #请求路径,一共十页每页25条数据
  15. def get_url(self):
  16. for i in range(10):
  17. #这里一定要注意要将i*25放在括号内,否则数据会出错
  18. yield 'https://movie.douban.com/top250?start=%s&filter=' % (i*25)
  19. def get_data(self,url):
  20. r=self.session.get(url=url,headers=self.headers)
  21. elements_list=r.html.find('li .item>.pic')
  22. for element in elements_list:
  23. #电影详情链接
  24. links_url=element.find('a',first=True).attrs.get('href')
  25. #电影排名
  26. range=element.find('em',first=True).text
  27. #电影名
  28. mov_name=element.find('a>img',first=True).attrs.get('alt')
  29. #电影封面
  30. img_url=element.find('a>img',first=True).attrs.get('src')
  31. print(range,mov_name)
  32. print(links_url)
  33. yield img_url,mov_name
  34. def save_img(self,img_url,img_name):
  35. r=self.session.get(img_url)
  36. img_path=os.path.join('豆瓣250图片',img_name+'.jpg')
  37. with open(img_path,'wb') as f:
  38. f.write(r.content)
  39. print('%s下载完毕'%img_name)
  40. #运行函数,获得路径
  41. def run(self):
  42. for url in self.get_url():
  43. for img_url,mov_name in self.get_data(url):
  44. self.save_img(img_url,mov_name)
  45. if __name__ == '__main__':
  46. a=douban250()
  47. a.run()

爬取校花网图片

  1. from requests_html import HTMLSession
  2. import os
  3. class spider():
  4. def __init__(self):
  5. self.session = HTMLSession()
  6. self.headers = {
  7. 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
  8. }
  9. def get_index_url(self):
  10. for i in range(1,4):
  11. #因为第一个页面是没有页面索引的
  12. if i == 1:
  13. yield 'http://www.xiaohuar.com/meinv/index.html'
  14. else:
  15. yield 'http://www.xiaohuar.com/meinv/index_%s.html'%i
  16. def get_img_name(self,index_url):
  17. r = self.session.get(url=index_url,headers=self.headers)
  18. elements_list = r.html.find('#images .items')
  19. for element in elements_list:
  20. img_url:str = element.find('img',first=True).attrs.get('src')
  21. #因为爬取得数据有些是绝对路径有些是相对路径,所有需要拼接
  22. if not img_url.startswith('http'):
  23. img_url = 'http://www.xiaohuar.com' + img_url
  24. #文件名不能出现左斜杠或者右斜杠,空格没问题
  25. img_name = element.find('.p_title>a',first=True).text.replace('\\','').replace('/','') + '.jpg'
  26. yield img_url,img_name
  27. def save_img(self,img_url,img_name):
  28. r = self.session.get(url=img_url)
  29. #新建一个存放图片的文件夹名叫‘校花图片’
  30. img_path= os.path.join('校花图片',img_name)
  31. with open(img_path,'wb') as f:
  32. f.write(r.content)
  33. print('%s下载完毕'%img_name)
  34. def run(self):
  35. for index_url in self.get_index_url():
  36. for img_url,img_name in self.get_img_name(index_url):
  37. self.save_img(img_url,img_name)
  38. if __name__ == '__main__':
  39. xiaohua = spider()
  40. xiaohua.run()

爬取豆瓣电影分类页面

  1. import requests_html
  2. #新建一个html文件,将相应的代码放入,运行查看结果,如果页面全部渲染则直接根据页面信息获得数据;
  3. #如果指定部分没有代码,则是通过ajax提交渲染的结果,需要通过控制台找到指定的后台接口
  4. # session=requests_html.HTMLSession()
  5. # url='https://movie.douban.com/tag/#/?sort=U&range=0,10&tags=2018'
  6. # r=session.get(url)
  7. # print(r.text)
  8. class spider():
  9. def __init__(self):
  10. #通过控制器NETWORK的XHR也就是json格式的数据找到的接口路径,注意结尾加问号
  11. self.api='https://movie.douban.com/j/new_search_subjects?'
  12. self.session=requests_html.HTMLSession()
  13. def get_params(self):
  14. year_range=input('请输入年份')
  15. sort=input('请输入排序规则(S按评分)')
  16. countries=input('请输入电影的制作国家')
  17. tags=input('请输入标签(如经典)')
  18. print('tags:',tags)
  19. self.params={
  20. 'year_range':year_range,
  21. 'sort':sort,
  22. 'start':0,
  23. # 'country':str(countryies.encode('utf8')).strip('b\'').replace('\\x','%').upper()
  24. 'countries':countries,
  25. 'tags':tags
  26. }
  27. def get_data(self):
  28. for i in range(1):
  29. #点击加载更多按键,每次加载20条数据
  30. self.params['start']=i*20
  31. r=self.session.get(url=self.api,params=self.params)
  32. print(r.json())
  33. def run(self):
  34. self.get_params()
  35. self.get_data()
  36. if __name__ == '__main__':
  37. douban=spider()
  38. douban.run()

requests_html爬虫小练习的更多相关文章

  1. 基于webmagic的爬虫小应用--爬取知乎用户信息

    听到“爬虫”,是不是第一时间想到Python/php ? 多少想玩爬虫的Java学习者就因为语言不通而止步.Java是真的不能做爬虫吗? 当然不是. 只不过python的3行代码能解决的问题,而Jav ...

  2. 一个python爬虫小程序

    起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...

  3. nodeJs爬虫小程序练习

    //爬虫小程序 var express = require('express'); //superagent是一个http的库,可以发起get和post请求 var superagent = requ ...

  4. 适合新手的Python爬虫小程序

    介绍:此程序是使用python做的一个爬虫小程序  爬取了python百度百科中的部分内容,因为这个demo是根据网站中的静态结构爬取的,所以如果百度百科词条的html结构发生变化 需要修改部分内容. ...

  5. java网络爬虫爬虫小栗子

    简要介绍: 使用java开发的爬虫小栗子,存储到由zookeeper协调的hbase中 主要过程是模拟Post请求和get请求,html解析,hbase存储 源码:https://github.com ...

  6. 福利贴——爬取美女图片的Java爬虫小程序代码

    自己做的一个Java爬虫小程序 废话不多说.先上图. 目录命名是用标签缩写,假设大家看得不顺眼能够等完成下载后手动改一下,比方像有强迫症的我一样... 这是挂了一个晚上下载的总大小,只是还有非常多由于 ...

  7. Python_爬虫小实例

    爬虫小实例 一.问题描述与分析 Q:查询某一只股票,在百度搜索页面的结果的个数以及搜索结果的变化. 分析: 搜索结果个数如下图: 搜索结果的变化:通过观察可以看到,每个一段时间搜索结果的个数是有所变化 ...

  8. Java豆瓣电影爬虫——小爬虫成长记(附源码)

    以前也用过爬虫,比如使用nutch爬取指定种子,基于爬到的数据做搜索,还大致看过一些源码.当然,nutch对于爬虫考虑的是十分全面和细致的.每当看到屏幕上唰唰过去的爬取到的网页信息以及处理信息的时候, ...

  9. python网页爬虫小项目开发

    这是我最近接的一个小项目,花了是整整四天多时间. 任务是将http://www.examcoo.com/index/detail/mid/7网站下所有的试卷里的试题全部提取出来,首先按照题型进行分类, ...

随机推荐

  1. HTML-参考手册: HTML 颜色名

    ylbtech-HTML-参考手册: HTML 颜色名 1.返回顶部 1. HTML 颜色名 目前所有浏览器都支持以下颜色名. 141个颜色名称是在HTML和CSS颜色规范定义的(17标准颜色,再加1 ...

  2. Python错误 importModuleNotFoundError: No module named 'Crypto'

    0x00经过 今天在python中导入模块的用     from Crypto.Cipher import AES 的时候出现了找不到模块的错误. 百度了很长时间有很多解决方法,但是因不同的环境不同的 ...

  3. sublime useful packages

    Package control Prefixr Emmet

  4. Linux打开关闭ping

    #关闭 ” >/proc/sys/net/ipv4/icmp_echo_ignore_all #打开 ” >/proc/sys/net/ipv4/icmp_echo_ignore_all

  5. networkComms 通信框架之 消息处理器

    经常做Tcp通信的朋友知道,客户端发送数据到服务器 或者 服务器发送消息到客户端,接收端都要有相对应的处理器来对消息进行处理. 这里有两个概念 需要进行区别 消息类型 实际的数据类型  这里指的是未被 ...

  6. JavaScript中如何让图形旋转不会相互影响

    最近在联系JavaScript 二维绘图,经常会用到旋转,前几篇博文也提到过这类问题. 但是我忘记了JavaScript二维绘图中有关旋转最核心的两个方法:save()和restore() 在w3c上 ...

  7. MyBatis使用注解方式实现CRUD操作

    一.使用注解后就不需要写SysGroupDaoMapper.xml 只需要在Dao的抽象方法前加上相应的注解就可以. package cn.mg39.ssm01.dao; import java.ut ...

  8. 如何在MySQL中删除表中指定列的唯一键?

    语法结构如下: alter table table_name drop  index column_name;

  9. 解决windows10 安装不了.net 3.5问题

    百度链接附上 详细操作参考使用说明 链接: https://pan.baidu.com/s/1vLXfuxP7qxujCFVB7xjxdg 提取码: seeu 如果还不能按照参考说明的安装 请直接在安 ...

  10. 聚合函数 -AVG/MAX/MIN/STDDEV/VARIANCE/SUM/COUNT/MEDIAN

    ------------------------------------------聚合函数--------------------------------------------- --1: AVG ...