目录

  • 目录
  • Python网络爬虫与信息提取
    • 淘宝商品比价定向爬虫

        • 目标获取淘宝搜索页面的信息
        • 理解淘宝的搜索接口翻页的处理
        • 技术路线requests-refootnote
      • 代码如下
    • 股票数据定向爬虫
      • 列表内容
      • 爬取网站原则
      • 代码如下
      • 代码优化

Python网络爬虫与信息提取

  1. 淘宝商品比价定向爬虫
  2. 股票数据定向爬虫

1. 淘宝商品比价定向爬虫


功能描述

目标:获取淘宝搜索页面的信息

理解:淘宝的搜索接口翻页的处理

技术路线:requests-re[^footnote].


代码如下:

#CrowTaobaoPrice.py
import requests
import redef getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""def parsePage(ilt, html):try:plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)for i in range(len(plt)):price = eval(plt[i].split(':')[1])title = eval(tlt[i].split(':')[1])ilt.append([price , title])except:print("")def printGoodsList(ilt):tplt = "{:4}\t{:8}\t{:16}"print(tplt.format("序号", "价格", "商品名称"))count = 0for g in ilt:count = count + 1print(tplt.format(count, g[0], g[1]))def main():goods = '书包'depth = 3start_url = 'https://s.taobao.com/search?q=' + goodsinfoList = []for i in range(depth):try:url = start_url + '&s=' + str(44*i)html = getHTMLText(url)parsePage(infoList, html)except:continueprintGoodsList(infoList)main()

流程图:
步骤1:提交商品搜索请求,循环获取页面
步骤2:对于每个页面,提取商品名称和价格信息
步骤3:将信息输出到屏幕上

Created with Raphaël 2.1.0开始提交商品搜索请求,循环获取页面对于每个页面,提取商品名称和价格信息将信息输出到屏幕上结束

2. 股票数据定向爬虫


1. 列表内容

功能描述
目标:获取上交所和深交所所有股票的名称和交易信息
输出:保存到文件中
技术路线:requests-bs4-re

新浪股票:http://finance.sina.com.cn/stock/
百度股票:https://gupiao.baidu.com/stock/

2.爬取网站原则

选取原则:股票信息静态存在于HTML页面中,非js代码生成,没有Robots协议限制
选取方法:浏览器F12,源代码查看等
选取心态:不要纠结于某个网站,多找信息源尝试

程序结构如下

Created with Raphaël 2.1.0开始步骤1:从东方财富网获取股票列表步骤2:根据股票列表逐个到百度股票获取个股信息步骤3:将结果存储到文件结束

代码如下

#CrawBaiduStocksA.py
import requests
from bs4 import BeautifulSoup
import traceback
import redef getHTMLText(url):try:r = requests.get(url)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""def getStockList(lst, stockURL):html = getHTMLText(stockURL)soup = BeautifulSoup(html, 'html.parser') a = soup.find_all('a')for i in a:try:href = i.attrs['href']lst.append(re.findall(r"[s][hz]\d{6}", href)[0])except:continuedef getStockInfo(lst, stockURL, fpath):for stock in lst:url = stockURL + stock + ".html"html = getHTMLText(url)try:if html=="":continueinfoDict = {}soup = BeautifulSoup(html, 'html.parser')stockInfo = soup.find('div',attrs={'class':'stock-bets'})name = stockInfo.find_all(attrs={'class':'bets-name'})[0]infoDict.update({'股票名称': name.text.split()[0]})keyList = stockInfo.find_all('dt')valueList = stockInfo.find_all('dd')for i in range(len(keyList)):key = keyList[i].textval = valueList[i].textinfoDict[key] = valwith open(fpath, 'a', encoding='utf-8') as f:f.write( str(infoDict) + '\n' )except:traceback.print_exc()continuedef main():stock_list_url = 'http://quote.eastmoney.com/stocklist.html'stock_info_url = 'https://gupiao.baidu.com/stock/'output_file = 'D:/BaiduStockInfo.txt'slist=[]getStockList(slist, stock_list_url)getStockInfo(slist, stock_info_url, output_file)main()

代码优化

1.编码识别优化
2.增加动态进度显示

优化后代码如下

import requests
from bs4 import BeautifulSoup
import traceback
import redef getHTMLText(url, code="utf-8"):try:r = requests.get(url)r.raise_for_status()r.encoding = codereturn r.textexcept:return ""def getStockList(lst, stockURL):html = getHTMLText(stockURL, "GB2312")soup = BeautifulSoup(html, 'html.parser') a = soup.find_all('a')for i in a:try:href = i.attrs['href']lst.append(re.findall(r"[s][hz]\d{6}", href)[0])except:continuedef getStockInfo(lst, stockURL, fpath):count = 0for stock in lst:url = stockURL + stock + ".html"html = getHTMLText(url)try:if html=="":continueinfoDict = {}soup = BeautifulSoup(html, 'html.parser')stockInfo = soup.find('div',attrs={'class':'stock-bets'})name = stockInfo.find_all(attrs={'class':'bets-name'})[0]infoDict.update({'股票名称': name.text.split()[0]})keyList = stockInfo.find_all('dt')valueList = stockInfo.find_all('dd')for i in range(len(keyList)):key = keyList[i].textval = valueList[i].textinfoDict[key] = valwith open(fpath, 'a', encoding='utf-8') as f:f.write( str(infoDict) + '\n' )count = count + 1print("\r当前进度: {:.2f}%".format(count*100/len(lst)),end="")except:count = count + 1print("\r当前进度: {:.2f}%".format(count*100/len(lst)),end="")continuedef main():stock_list_url = 'http://quote.eastmoney.com/stocklist.html'stock_info_url = 'https://gupiao.baidu.com/stock/'output_file = 'D:/BaiduStockInfo.txt'slist=[]getStockList(slist, stock_list_url)getStockInfo(slist, stock_info_url, output_file)main()

来自
Python网络爬虫与信息提取
中国大学mooc
http://www.icourse163.org/learn/BIT-1001870001?tid=1001962001#/learn/content?type=detail&id=1002699548&cid=1003101008

Python网络爬虫与信息提取(中国大学mooc)相关推荐

  1. python网络爬虫程序技术_Python网络爬虫程序技术-中国大学mooc-题库零氪

    Python网络爬虫程序技术 - 中国大学mooc 已完结  94 项目1 爬取学生信息 1.2 Flask Web网站随堂测验 1.import flask app=flask.Flask(__n ...

  2. 中国大学MOOC·Python网络爬虫与信息提取_思考小结(一)

    一. 关于requests库用法的几个辨析 1.requests库内分七个函数,分别为 request,get,head,post,put,patch,delete, 其中最经常使用的是:get/he ...

  3. 嵩天《Python网络爬虫与信息提取》实例2:中国大学排名定向爬虫

    在介绍完requests库和robots协议后,嵩天老师又重点介绍了如何通过BeautifulSoup库进行网页解析和信息提取.这一部分就是在前面内容的基础上,综合运用requests库和Beauti ...

  4. python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...

  5. MOOC《Python网络爬虫和信息提取》(第11次)网络爬虫之框架(第4周)

    MOOC<Python网络爬虫和信息提取>(第11次)网络爬虫之框架(第4周) MOOC–Python网络爬虫和信息提取(第11次开课) 网络爬虫之框架 21.08.10 目录 文章目录 ...

  6. Python网络爬虫与信息提取

    1.Requests库入门 Requests安装 用管理员身份打开命令提示符: pip install requests 测试:打开IDLE: >>> import requests ...

  7. python网络爬虫与信息提取_北京理工大学_Python网络爬虫与信息提取(一)

    学习 北京理工大学 嵩天 课程笔记 课程体系结构: 1.Requests框架:自动爬取HTML页面与自动网络请求提交 2.robots.txt:网络爬虫排除标准 3.BeautifulSoup框架:解 ...

  8. Python网络爬虫与信息提取—requests库入门

    requests的学习笔记 requests库自动爬取HTML页面,自动网络请求提交 此博客为中国大学MOOC北京理工大学<Python网络爬虫与信息提取>的学习笔记 requests库的 ...

  9. Python网络爬虫与信息提取笔记08-实例2:淘宝商品比价定向爬虫

    Python网络爬虫与信息提取笔记01-Requests库入门 Python网络爬虫与信息提取笔记02-网络爬虫之"盗亦有道" Python网络爬虫与信息提取笔记03-Reques ...

最新文章

  1. 目前有没有好用的RNASeq的pipeline呢?
  2. OpenStack Ocata Release Notes
  3. IC/FPGA校招笔试题分析(四)再看Moore状态机实现序列检测器
  4. 【Linux 应用编程】进程管理 - 进程间通信IPC之共享内存 mmap
  5. 第三届“传智杯”全国大学生IT技能大赛(初赛B组)【C++】
  6. Mybatis-入门篇-根据官方文档搭建
  7. Java IO5:管道流、对象流
  8. 《四世同堂》金句摘抄(十四)
  9. 此时我的waga2012源码情绪也平静了许多
  10. 90行代码让微信地球转起来,太酷了!(python实现)
  11. 相机模型与标定(十四)--误差分析
  12. jquery实现百度类似搜索提示功能(AJAX应用)
  13. 微积分 --- 以e为底的指数函数(个人学习笔记)
  14. 只要五分钟,即可将博客搬到公众号并完美布局(原创-独家)!
  15. OpenSSL FIPS安装
  16. 老罗锤子手机(Smartisan T1)的一些感想
  17. 前台通过base64传图片到后台的实现方法
  18. 下一代个性化推荐系统
  19. 谷粒商城 集群篇 (五) --------- DevOps
  20. qt内存泄漏检测_qt 关于内存泄漏的检测

热门文章

  1. Material Design Lite组件之徽章
  2. librtmp的简单安装使用
  3. Linux基础、Shell基础语法等
  4. 65536问题理解v4
  5. Ceph-deploy 搭建Ceph分布式存储系统
  6. Windows中mysql使用命令行登录
  7. 计算机word文本段落位置互换,用word怎么使两个段落互换位置
  8. npm -g, npm -s, npm -d 的区别
  9. 迈瑞医疗招聘-软件测试工程师
  10. 2010年中国电子商务软件十强企业