Python网络爬虫与信息提取(中国大学mooc)
目录
- 目录
- Python网络爬虫与信息提取
- 淘宝商品比价定向爬虫
- 目标获取淘宝搜索页面的信息
- 理解淘宝的搜索接口翻页的处理
- 技术路线requests-refootnote
- 代码如下
- 股票数据定向爬虫
- 列表内容
- 爬取网站原则
- 代码如下
- 代码优化
- 淘宝商品比价定向爬虫
Python网络爬虫与信息提取
- 淘宝商品比价定向爬虫
- 股票数据定向爬虫
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:将信息输出到屏幕上
2. 股票数据定向爬虫
1. 列表内容
功能描述
目标:获取上交所和深交所所有股票的名称和交易信息
输出:保存到文件中
技术路线:requests-bs4-re
新浪股票:http://finance.sina.com.cn/stock/
百度股票:https://gupiao.baidu.com/stock/
2.爬取网站原则
选取原则:股票信息静态存在于HTML页面中,非js代码生成,没有Robots协议限制
选取方法:浏览器F12,源代码查看等
选取心态:不要纠结于某个网站,多找信息源尝试
程序结构如下
代码如下
#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)相关推荐
- python网络爬虫程序技术_Python网络爬虫程序技术-中国大学mooc-题库零氪
Python网络爬虫程序技术 - 中国大学mooc 已完结 94 项目1 爬取学生信息 1.2 Flask Web网站随堂测验 1.import flask app=flask.Flask(__n ...
- 中国大学MOOC·Python网络爬虫与信息提取_思考小结(一)
一. 关于requests库用法的几个辨析 1.requests库内分七个函数,分别为 request,get,head,post,put,patch,delete, 其中最经常使用的是:get/he ...
- 嵩天《Python网络爬虫与信息提取》实例2:中国大学排名定向爬虫
在介绍完requests库和robots协议后,嵩天老师又重点介绍了如何通过BeautifulSoup库进行网页解析和信息提取.这一部分就是在前面内容的基础上,综合运用requests库和Beauti ...
- python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...
- MOOC《Python网络爬虫和信息提取》(第11次)网络爬虫之框架(第4周)
MOOC<Python网络爬虫和信息提取>(第11次)网络爬虫之框架(第4周) MOOC–Python网络爬虫和信息提取(第11次开课) 网络爬虫之框架 21.08.10 目录 文章目录 ...
- Python网络爬虫与信息提取
1.Requests库入门 Requests安装 用管理员身份打开命令提示符: pip install requests 测试:打开IDLE: >>> import requests ...
- python网络爬虫与信息提取_北京理工大学_Python网络爬虫与信息提取(一)
学习 北京理工大学 嵩天 课程笔记 课程体系结构: 1.Requests框架:自动爬取HTML页面与自动网络请求提交 2.robots.txt:网络爬虫排除标准 3.BeautifulSoup框架:解 ...
- Python网络爬虫与信息提取—requests库入门
requests的学习笔记 requests库自动爬取HTML页面,自动网络请求提交 此博客为中国大学MOOC北京理工大学<Python网络爬虫与信息提取>的学习笔记 requests库的 ...
- Python网络爬虫与信息提取笔记08-实例2:淘宝商品比价定向爬虫
Python网络爬虫与信息提取笔记01-Requests库入门 Python网络爬虫与信息提取笔记02-网络爬虫之"盗亦有道" Python网络爬虫与信息提取笔记03-Reques ...
最新文章
- 目前有没有好用的RNASeq的pipeline呢?
- OpenStack Ocata Release Notes
- IC/FPGA校招笔试题分析(四)再看Moore状态机实现序列检测器
- 【Linux 应用编程】进程管理 - 进程间通信IPC之共享内存 mmap
- 第三届“传智杯”全国大学生IT技能大赛(初赛B组)【C++】
- Mybatis-入门篇-根据官方文档搭建
- Java IO5:管道流、对象流
- 《四世同堂》金句摘抄(十四)
- 此时我的waga2012源码情绪也平静了许多
- 90行代码让微信地球转起来,太酷了!(python实现)
- 相机模型与标定(十四)--误差分析
- jquery实现百度类似搜索提示功能(AJAX应用)
- 微积分 --- 以e为底的指数函数(个人学习笔记)
- 只要五分钟,即可将博客搬到公众号并完美布局(原创-独家)!
- OpenSSL FIPS安装
- 老罗锤子手机(Smartisan T1)的一些感想
- 前台通过base64传图片到后台的实现方法
- 下一代个性化推荐系统
- 谷粒商城 集群篇 (五) --------- DevOps
- qt内存泄漏检测_qt 关于内存泄漏的检测