1. import requests
  2. import re
  3.  
  4. url = 'http://www.ygdy8.net/html/gndy/dyzz/list_23_{}.html'
  5. for n in range(1, 2):
  6. new_url = url.format(n)
  7. html_1 = requests.get(new_url)
  8. html_1.encoding = 'gb2312'
  9. detil_list = re.findall('<a href="(.*?)" class="ulink">', html_1.text)
  10.  
  11. for m in detil_list:
  12. b_url = 'http://www.ygdy8.net' + m
  13. html_2 = requests.get(b_url)
  14. html_2.encoding = 'gb2312'
  15. ftp = re.findall('<a href="(.*?)">.*?</a></td>', html_2.text)
  16. with open('tddy.txt', 'a', encoding='utf-8') as f:
  17. f.write(ftp[0] + '\n')

大学排名练习

  1. import bs4
  2. import requests
  3. from bs4 import BeautifulSoup
  4.  
  5. def get_html_text(url):
  6. try:
  7. r = requests.get(url, timeout=20)
  8. r.raise_for_status()
  9. r.encoding = r.apparent_encoding
  10. return r.text
  11. except:
  12. return " "
  13.  
  14. def fill_univ_list(ulist, html):
  15. soup = BeautifulSoup(html, "html.parser")
  16. for tr in soup.find('tbody').children:
  17. if isinstance(tr, bs4.element.Tag): # 判断类型
  18. tds = tr('td')
  19. ulist.append([tds[0].string, tds[1].string, tds[3].string])
  20.  
  21. def print_univ_list(ulist, num):
  22. tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
  23. print(tplt.format("排名", "学校名称", "总分", chr(12288)))
  24. for i in range(num):
  25. u = ulist[i]
  26. print(tplt.format(u[0], u[1], u[2], chr(12288)))
  27.  
  28. def main():
  29. uinfo = []
  30. url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html'
  31. html = get_html_text(url)
  32. fill_univ_list(uinfo, html)
  33. print_univ_list(uinfo, 20)
  34.  
  35. main()

淘宝商品比价:

  1. import requests
  2. import re
  3.  
  4. def get_html_text(url):
  5. try:
  6. r = requests.get(url, timeout=30)
  7. r.raise_for_status()
  8. r.encoding = 'utf-8'
  9. return r.text
  10. except:
  11. return ""
  12.  
  13. def parse_page(ilt, html):
  14. try:
  15. plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)
  16. tlt = re.findall(r'\"raw_title\"\:\".*?\"', html)
  17. for i in range(len(plt)):
  18. price = eval(plt[i].split(':')[1])
  19. title = eval(tlt[i].split(':')[1])
  20. ilt.append([price, title])
  21. except:
  22. print("")
  23.  
  24. def print_goods_list(ilt):
  25. tplt = "{:4}\t{:8}\t{:16}"
  26. print(tplt.format("序号", "价格", "商品名称"))
  27. count = 0
  28. for g in ilt:
  29. count = count + 1
  30. print(tplt.format(count, g[0], g[1]))
  31.  
  32. def main():
  33. goods = '减肥餐'
  34. depth = 2
  35. start_url = 'http://s.taobao.com/search?q=' + goods
  36. info_list = []
  37. for i in range(depth):
  38. try:
  39. url = start_url + '&s=' + str(44*i)
  40. html = get_html_text(url)
  41. parse_page(info_list, html)
  42. except:
  43. continue
  44. print_goods_list(info_list)

股票数据:

  1. import re
  2. import traceback
  3.  
  4. import requests
  5. import sys
  6. from bs4 import BeautifulSoup
  7.  
  8. def get_html_text(url, code='utf-8'):
  9. headers ={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
  10. try:
  11. r = requests.get(url, timeout=20, headers=headers)
  12. r.raise_for_status()
  13. r.encoding = code
  14. return r.text
  15. except:
  16. return ""
  17.  
  18. def get_stock_list(lst, stock_url):
  19. html = get_html_text(stock_url, 'GB2312')
  20. soup = BeautifulSoup(html, 'html.parser')
  21. a = soup.find_all('a')
  22. for i in a:
  23. stock_code = re.findall(r'[s][hz]\d{6}', str(i))
  24. if len(stock_code) != 0:
  25. lst.append(stock_code)
  26.  
  27. def get_stock_info(lst, stock_url, fpath):
  28. count = 0
  29. for stock in lst:
  30. url = stock_url + stock[0] + '.html'
  31. print(url)
  32. html = get_html_text(url)
  33. try:
  34. if html == "":
  35. continue
  36. info_dict = {}
  37. soup = BeautifulSoup(html, 'html.parser')
  38. stock_info = soup.find('div', attrs={'class': 'stock-bets'})
  39. info_dict.update({'股票名称': stock_info.text.split()[0]})
  40.  
  41. key_list = stock_info.find_all('dt')
  42. value_list = stock_info.find_all('dd')
  43. for i in range(len(key_list)):
  44. key = key_list[i].text
  45. info_dict[key] = value_list[i].text
  46.  
  47. with open(fpath, 'a', encoding='utf-8') as f:
  48. f.write(str(info_dict) + '\n')
  49. count = count + 1
  50. print("\r当前进度: {:.2f}%".format(count*100/len(lst), end=""))
  51. except:
  52. traceback.print_exc(file=sys.stdout)
  53. count = count + 1
  54. print("\r当前进度: {:.2f}%".format(count * 100 / len(lst), end=""))
  55. continue
  56.  
  57. def main():
  58. stock_list_url = 'http://quote.eastmoney.com/stocklist.html'
  59. stock_info_url = 'http://gupiao.baidu.com/stock/'
  60. output_file = 'D:/BaiduStockInfo.txt'
  61. slist = []
  62. get_stock_list(slist, stock_list_url)
  63. get_stock_info(slist, stock_info_url, output_file)

python3----练习题(爬取电影天堂资源,大学排名,淘宝商品比价)的更多相关文章

  1. Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...

  2. 14.python案例:爬取电影天堂中所有电视剧信息

    1.python案例:爬取电影天堂中所有电视剧信息 #!/usr/bin/env python3 # -*- coding: UTF-8 -*- '''======================== ...

  3. python利用requests和threading模块,实现多线程爬取电影天堂最新电影信息。

    利用爬到的数据,基于Django搭建的一个最新电影信息网站: n1celll.xyz  (用的花生壳动态域名解析,服务器在自己的电脑上,纯属自娱自乐哈.) 今天想利用所学知识来爬取电影天堂所有最新电影 ...

  4. Python爬取电影天堂指定电视剧或者电影

    1.分析搜索请求 一位高人曾经说过,想爬取数据,要先分析网站 今天我们爬取电影天堂,有好看的美剧我在上面都能找到,算是很全了. 这个网站的广告出奇的多,用过都知道,点一下搜索就会弹出个窗口,伴随着滑稽 ...

  5. scrapy框架用CrawlSpider类爬取电影天堂.

    本文使用CrawlSpider方法爬取电影天堂网站内国内电影分类下的所有电影的名称和下载地址 CrawlSpider其实就是Spider的一个子类. CrawlSpider功能更加强大(链接提取器,规 ...

  6. requests+BeautifulSoup | 爬取电影天堂全站电影资源

    import requests import urllib.request as ur from bs4 import BeautifulSoup import csv import threadin ...

  7. requests+lxml+xpath爬取电影天堂

    1.导入相应的包 import requests from lxml import etree 2.原始ur url="https://www.dytt8.net/html/gndy/dyz ...

  8. 爬虫之爬取电影天堂(request)

    #需要通过代码打开https://www.dytt8.net/网站,拿到网站内容 from urllib.request import urlopen #拿到urlopen import re con ...

  9. java批量爬取电影资源

    摘要 网上有很多个人站来分享电影资源,其实有时候我们自己也想做这个一个电影站来分享资源.但是这个时候就有一个问题,电影的资源应该从哪里来呢?难道要自己一条条手动去从网络上获取,这样无疑是缓慢而又效率低 ...

随机推荐

  1. Android系统源代码——所需工具

    一.概述 众所周知,Android移动操作系统是Google花费了很大的财力.物力及人力的前提下,推广到世界各个角落,以开放源代码的方式(当然也不是完全开放所有),使其在世界范围内迅速漫延开来,到目前 ...

  2. Linux环境下的make和makefile详解

    无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型 ...

  3. cpu_test

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. iOS开发-代码片段(Code Snippets)提高开发效率

    简介 在 XCode4 引入了一个新特性,那就是“代码片段(Code Snippets)”.对于一些经常用到的代码,抽象成模板放到 Code Snippets 中,使用的时候就只需要键入快捷键就可以了 ...

  5. 笔记本装ubuntu发热量大该如何缓解?

    win7下的双卡技术是optimus, 驱动完善,不会让两个显卡同时满负荷工作, linux下由于驱动软件闭源, xorg的开源驱动没有做这个显卡电源管理, 目前的N卡较好解决方案就是bumblebe ...

  6. Linux命令-用户管理命令:useradd,passwd,who,w

    who 查看登录用户 w 查看登录用户详细信息

  7. C# BeginInvoke和EndInvoke方法

    转载自:BeginInvoke和EndInvoke方法 IDE:Visual Studio 2008 本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法 2. Threa ...

  8. mysql innodb的重要组件

    innodb包涵如下几个组件 一.innodb_buffer_pool: 1 它主要用来缓存数据与索引(准确的讲由于innodb中的表是由聚集索引组织的,所以数据只不是过主键这个索引的叶子结点). 二 ...

  9. 如何利用webmin在Linux主机中添加网站

    Linux系统因其高效稳定而受到广大用户的推崇与青睐,然后其管理的复杂性也使很多用户望而却步,动弹不得.为了降低 Linux系统的管理难度,更有效方便的使用该系统,我司所有Linux主机或VPS系统均 ...

  10. javascript递归、循环、迭代、遍历和枚举概念

    javascript递归.循环.迭代.遍历和枚举概念 〓递归(recursion)在数学与计算机科学中,是指在函数的定义中使用函数自身的方法.递归一词还较常用于描述以自相似方法重复事物的过程.例如,当 ...