1. import hashlib
  2.  
  3. md5 = hashlib.md5()
  4. md5.update(b'Test String')
  5. print(md5.hexdigest())

  1. import hashlib
  2.  
  3. md5 = hashlib.md5(b'Test String').hexdigest()
  4. print(md5)

  1. import os
  2. import hashlib
  3. import requests
  4.  
  5. # url = "http://opendata.epa.gov.tw/ws/Data/REWXQA/?$orderby=SiteName&$skip=0&$top=1000&format=json"
  6. url = "https://www.baidu.com"
  7.  
  8. # 读取网页原始码
  9. html=requests.get(url).text.encode('utf-8-sig')
  10. # 判断网页是否更新
  11. md5 = hashlib.md5(html).hexdigest()
  12. if os.path.exists('F:\\pythonBase\\pythonex\\ch06\\old_md5.txt'):
  13. with open('F:\\pythonBase\\pythonex\\ch06\\old_md5.txt', 'r') as f:
  14. old_md5 = f.read()
  15. with open('F:\\pythonBase\\pythonex\\ch06\\old_md5.txt', 'w') as f:
  16. f.write(md5)
  17. else:
  18. with open('F:\\pythonBase\\pythonex\\ch06\\old_md5.txt', 'w') as f:
  19. f.write(md5)
  20.  
  21. if md5 != old_md5:
  22. print('数据已更新...')
  23. else:
  24. print('数据未更新,从数据库读取...')

  1. import os
  2. import ast
  3. import hashlib
  4. import sqlite3
  5. import requests
  6.  
  7. from bs4 import BeautifulSoup
  8.  
  9. conn = sqlite3.connect('F:\\pythonBase\\pythonex\\DataBasePM25.sqlite') # 建立数据库连接
  10. cursor = conn.cursor() # 建立 cursor 对象
  11.  
  12. # 建立一个数据表
  13. sqlstr='''
  14. CREATE TABLE IF NOT EXISTS TablePM25 ("no" INTEGER PRIMARY KEY AUTOINCREMENT
  15. NOT NULL UNIQUE ,"SiteName" TEXT NOT NULL ,"PM25" INTEGER)
  16. '''
  17. cursor.execute(sqlstr)
  18.  
  19. url = "http://api.help.bj.cn/apis/aqilist/"
  20. #html=requests.get(url).text.encode('utf-8-sig') # 读取网页原始码
  21. html=requests.get(url).text.encode('iso-8859-1').decode('utf-8-sig')
  22. # print(html)
  23. html = html.encode('utf-8-sig')
  24. # 判断网页是否更新
  25. md5 = hashlib.md5(html).hexdigest()
  26. old_md5 = ""
  27.  
  28. if os.path.exists('F:\\pythonBase\\pythonex\\ch06\\old_md5-.txt'):
  29. with open('F:\\pythonBase\\pythonex\ch06\\old_md5-.txt', 'r') as f:
  30. old_md5 = f.read()
  31. with open('F:\\pythonBase\\pythonex\ch06\\old_md5-.txt', 'w') as f:
  32. f.write(md5)
  33. print("old_md5="+old_md5+";"+"md5="+md5) #显示新老md5码进行观察
  34. if md5 != old_md5:
  35. print('数据已更新...')
  36. sp=BeautifulSoup(html,'html.parser') #解析网页内容
  37. jsondata = ast.literal_eval(sp.text) #此时jscondata取到的是字典类型数据
  38. # 删除数据表内容
  39. js1=jsondata.get("aqidata") #取出字典数据中的aqidata项的值(值是列表)
  40. conn.execute("delete from TablePM25")
  41. conn.commit()
  42. n=1
  43. for city in js1: #city此时是列表js1中的第一条字典数据
  44. CityName=city["city"] #取出city字典数据中的值为"city"的key
  45. if(city["pm2_5"] == ""):
  46. PM25=0
  47. else: #如果city字典中的key对应的value为空,则PM25=0,否则,把PM25=value
  48. PM25=int(city["pm2_5"])
  49. print("城市:{} PM2.5={}".format(CityName,PM25)) #显示城市对应的名称与PM2.5值
  50. # 新增一笔记录
  51. sqlstr="insert into TablePM25 values({},'{}',{})" .format(n,CityName,PM25)
  52. cursor.execute(sqlstr)
  53. n+=1
  54. conn.commit() # 主动更新
  55. else:
  56. print('数据未更新,从数据库读取...')
  57. cursor=conn.execute("select * from TablePM25")
  58. rows=cursor.fetchall()
  59. for row in rows:
  60. print("城市:{} PM2.5={}".format(row[1],row[2]))
  61.  
  62. conn.close() # 关闭数据库连

........................................................

  1. import os
  2. import ast
  3. import hashlib
  4. import sqlite3
  5. import requests
  6.  
  7. from bs4 import BeautifulSoup
  8.  
  9. # cur_path=os.path.dirname(__file__) # 取得目前路径
  10. # print(cur_path)
  11. conn = sqlite3.connect('F:\\pythonBase\\pythonex\\' + 'DataBasePM25.sqlite') # 建立数据库连接
  12. cursor = conn.cursor() # 建立 cursor 对象
  13.  
  14. # 建立一个数据表
  15. sqlstr='''
  16. CREATE TABLE IF NOT EXISTS TablePM25 ("no" INTEGER PRIMARY KEY AUTOINCREMENT
  17. NOT NULL UNIQUE ,"SiteName" TEXT NOT NULL ,"PM25" INTEGER)
  18. '''
  19. cursor.execute(sqlstr)
  20.  
  21. url = "http://api.help.bj.cn/apis/aqilist/"
  22. # 读取网页原始码
  23. # html=requests.get(url).text.encode('utf-8-sig')
  24. html=requests.get(url).text.encode('iso-8859-1').decode('utf-8-sig')
  25. # print(html)
  26. html = html.encode('utf-8-sig')
  27.  
  28. print('数据已更新...')
  29. sp=BeautifulSoup(html,'html.parser') #sp是bs4.Beautifulsoup类
  30. # 将网页内转换为 list,list 中的元素是 dict
  31. jsondata = ast.literal_eval(sp.text) #把sp.text字符串转为dict类型
  32. js=jsondata.get("aqidata") #从jasondata中取出值为"aqidata"的key对应的value的列表
  33.  
  34. # 删除数据表内容
  35. conn.execute("delete from TablePM25")
  36. conn.commit()
  37.  
  38. #把抓到的数据逐条存到数据库
  39. n=1
  40. for city in js:
  41. CityName=city["city"]
  42. PM25=0 if city["pm2_5"] == "" else int(city["pm2_5"])
  43. print("城市:{} PM2.5={}".format(CityName,PM25))
  44. # 新增一条记录
  45. sqlstr="insert into TablePM25 values({},'{}',{})" .format(n,CityName,PM25)
  46. cursor.execute(sqlstr)
  47. n+=1
  48. conn.commit() # 主动更新
  49. conn.close() # 关闭数据库连

  1. from time import sleep
  2. from selenium import webdriver
  3.  
  4. urls = ['http://www.baidu.com','http://www.wsbookshow.com','http://news.sina.com.cn/']
  5.  
  6. browser = webdriver.Chrome()
  7. browser.maximize_window
  8. for url in urls:
  9. browser.get(url)
  10. sleep(3)
  11.  
  12. browser.quit()
  1. from selenium import webdriver #导入webdriver
  2.  
  3. url='http://www.wsbookshow.com/bookshow/jc/bk/cxsj/12442.html' #以此链接为例
  4. browser=webdriver.Chrome() #生成Chrome浏览器对象(结果是打开Chrome浏览器)
  5. browser.get(url) #在浏览器中打开url
  6. login_form=browser.find_element_by_id("menu_1") ##查找id="menu_1"的元素
  7. print(login_form.text) #显示元素内容
  8. #browser.quit() #退出浏览器,退出驱动程序
  9. username=browser.find_element_by_name("username") #查找name="username"的元素
  10. print(username)
  11. password=browser.find_element_by_name("pwd") #查找name="pwd"的元素
  12. print(password)
  13. login_form=browser.find_element_by_xpath("//input[@name='arcID']")
  14. print(login_form)
  15. login_form=browser.find_element_by_xpath("//div[@id='feedback_userbox']")
  16. print(login_form)
  17. continue_link=browser.find_element_by_link_text('新概念美语')
  18. print(continue_link)
  19. continue_link=browser.find_element_by_link_text('英语')
  20. print(continue_link)
  21. heading1=browser.find_element_by_tag_name('h1')
  22. print(heading1)
  23. content=browser.find_elements_by_class_name('topbanner')
  24. print(content)
  25. content=browser.find_elements_by_css_selector('.topsearch')
  26. print(content)
  27. # print(content.get_property)
  28. print()
  29. browser.quit() #退出浏览器,退出驱动程序

  1. text = '中华'
  2. print(type(text))#<class 'str'>
  3. text1 = text.encode('gbk')
  4. print(type(text1))#<class 'bytes'>
  5. print(text1)#b'\xd6\xd0\xbb\xaa'
  6. text2 = text1.decode('gbk')
  7. print(type(text2))#<class 'str'>
  8. print(text2)#中华
  9.  
  10. text4= text.encode('utf-8')
  11. print(type(text4))#<class 'bytes'>
  12. print(text4)#b'\xe4\xb8\xad\xe5\x8d\x8e'
  13. text5 = text4.decode('utf-8')
  14. print(type(text5))#<class 'str'>
  15. print(text5)#中华

  1. import requests
  2.  
  3. url="http://www.baidu.com"
  4. response = requests.get(url)
  5. content = response.text.encode('iso-8859-1').decode('utf-8')
  6. #把网页源代码解码成Unicode编码,然后用utf-8编码
  7. print(content)

  1. from selenium import webdriver # 导入webdriver模块
  2.  
  3. chrome_obj = webdriver.Chrome() # 打开Google浏览器
  4. chrome_obj.get("https://www.baidu.com") # 打开 网址
  5. print(chrome_obj.title)

  1. from selenium import webdriver # 导入webdriver模块
  2.  
  3. chrome_obj = webdriver.Chrome() # 打开Google浏览器
  4.  
  5. chrome_obj.get(r"C:\desktop\text.html") # 打开本地 html页面

吴裕雄 python 爬虫(3)的更多相关文章

  1. 吴裕雄 python 爬虫(4)

    import requests user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, li ...

  2. 吴裕雄 python 爬虫(2)

    import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com' html = requests.get(url) ...

  3. 吴裕雄 python 爬虫(1)

    from urllib.parse import urlparse url = 'http://www.pm25x.com/city/beijing.htm' o = urlparse(url) pr ...

  4. 吴裕雄--python学习笔记:爬虫基础

    一.什么是爬虫 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Python爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.URL管理器.网页下载器.网 ...

  5. 吴裕雄--python学习笔记:爬虫包的更换

    python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...

  6. 吴裕雄--python学习笔记:爬虫

    import chardet import urllib.request page = urllib.request.urlopen('http://photo.sina.com.cn/') #打开网 ...

  7. 吴裕雄 python 神经网络——TensorFlow pb文件保存方法

    import tensorflow as tf from tensorflow.python.framework import graph_util v1 = tf.Variable(tf.const ...

  8. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(4)

    # -*- coding: utf-8 -*- import glob import os.path import numpy as np import tensorflow as tf from t ...

  9. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(3)

    import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...

随机推荐

  1. CS229 6.16 Neurons Networks linear decoders and its implements

    Sparse AutoEncoder是一个三层结构的网络,分别为输入输出与隐层,前边自编码器的描述可知,神经网络中的神经元都采用相同的激励函数,Linear Decoders 修改了自编码器的定义,对 ...

  2. 对KVM虚拟机进行cpu pinning配置的方法

    这篇文章主要介绍了对KVM虚拟机进行cpu pinning配置的方法,通过文中的各种virsh命令可进行操作,需要的朋友可以参考下 首先需求了解基本的信息 1 宿主机CPU特性查看 使用virsh n ...

  3. Web of Science API

    Web of Science API是通过Web Service获取Web of Science在线数据的应用程序接口,供各种编程语言调用.简单说,就是你能根据API实时.动态得到网页版Web of ...

  4. nginx完全关闭log

    nginx.conf中要在http一节里面添加 access_log off; error_log off;

  5. SpringBoot在Kotlin中的实现(二)

    根据现在的开发模式和网上的一些资料,SpringBoot需要对业务和操作进行分层,通常分为controller.entity.service.respository等结构.下面以Kotlin官网的例子 ...

  6. WPF Blend 一个动画结束后另一个动画开始执行(一个一个执行)

    先说明思路:一个故事版Storyboard,两个双精度动画帧DoubleAnimation. 一个一个执行的原理:控制动画开始时间(例如第一个动画用时2秒,第二个动画就第2秒起开始执行.) XAML: ...

  7. 十年阿里java架构师的六大设计原则和项目经验

      先看一幅图吧: 这幅图清晰地表达了六大设计原则,但仅限于它们叫什么名字而已,它们具体是什么意思呢?下面我将从原文.译文.理解.应用,这四个方面分别进行阐述. 1.单一职责原则(Single Res ...

  8. oracle数据库tns配置方法详解

    TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS ...

  9. vue生命周期理解图

    ............................... 它可以总共分为8个阶段: beforeCreate(创建前), created(创建后), beforeMount(载入前), moun ...

  10. python中的ljust、rjust

    ljust()将字符串左对齐右侧填充 rjust()将字符串右对齐左侧填充 举个例子: 1 a = "hello world" 2 a1 = a.ljust(15, "* ...