python 嵩天课件_0.4嵩天老师python爬虫笔记整理week4
这里对北理爬虫课程第四周内容回顾,本周主要介绍了Scrapy框架。
1.如果官方例子无法运行,可以查看下twisted的版本,如果为17.0以上,那么先删除scrapy,twisted,运行以下两步
conda uninstall scrapy
conda uninstall twisted
接着重新安装scrapy以及twisted 16.6.0版本,运行以下两步
conda install twisted==16.6.0
conda install scrapy --no-deps
conda install scrapy —no-deps的意思是安装scrapy的时候不要安装依赖的twisted,因为conda安装scrapy的时候会让我们将twisted一起安装了。
2.安装完成之后官方的例子可以运行了,但是老师给的例子依旧不行,这里尝试了一下猜测是名字的问题,做了以下修改:自己命名fname
# -*- coding: utf-8 -*-
import scrapy
class DemoSpider(scrapy.Spider):
name = "demo"
#allowed_domains = ["python123.io"]
start_urls = ['http://python123.io/']
def parse(self, response):
#fname=response.url.split('/')[-1]
fname="demo.html"
with open(fname,'wb') as f:
f.write(response.body)
self.log('Saved file %s.' % fname)
完成这步之后老师的第一个例子就可以运行了。
3.第一个例子成功之后尝试了第二个例子,但依旧无法运行,这里参考了一位同学的发帖,对stocks.py文件进行如下修改
# -*- coding: utf-8 -*-
import scrapy
import re
import random
class StocksSpider(scrapy.Spider):
name = "stocks"
start_urls = ['http://quote.eastmoney.com/stocklist.html']
def __init__(self):
self.user_agent_list = [\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"\
"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",\
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",\
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",\
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",\
"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",\
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",\
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]
def parse(self, response):
ua = random.choice(self.user_agent_list)#随机抽取User-Agent
headers = {
'Accept-Encoding':'gzip, deflate, sdch, br',
'Accept-Language':'zh-CN,zh;q=0.8',
'Connection':'keep-alive',
'Referer':'https://gupiao.baidu.com/',
'User-Agent':ua
}#构造请求头
for href in response.css('a::attr(href)').extract():
try:
stock = re.findall(r"[s][hz]\d{6}", href)[0]
url = 'https://gupiao.baidu.com/stock/' + stock + '.html'
yield scrapy.Request(url, callback=self.parse_stock,headers=headers)
except:
continue
def parse_stock(self, response):
infoDict = {}
stockInfo = response.css('.stock-bets')
name = stockInfo.css('.bets-name').extract()[0]
keyList = stockInfo.css('dt').extract()
valueList = stockInfo.css('dd').extract()
for i in range(len(keyList)):
key = re.findall(r'>.*', keyList[i])[0][1:-5]
try:
val = re.findall(r'\d+\.?.*', valueList[i])[0][0:-5]
except:
val = '--'
infoDict[key]=val
infoDict.update(
{'股票名称': re.findall('\s.*\(',name)[0].split()[0] + \
re.findall('\>.*\<', name)[0][1:-1]})
yield infoDict
注意修改完成之后settings.py文件一定要修改,我一开始忘记修改了最后就没有文件产生。
参考资料:
python 嵩天课件_0.4嵩天老师python爬虫笔记整理week4相关推荐
- 嵩天老师python爬虫笔记整理week3
这里对北理爬虫课程第三周内容回顾,本周主要介绍了正则表达式 1.正则表达式的概念 正则表达式是用来简洁表达一组字符串的表达式 正则表达式是一种通用的字符串表达框架 进一步 正则表达式是一种针对字符串表 ...
- 【python】Python语言程序设计/嵩天老师入门课程笔记整理
分章节目录 1.python开发环境配置 1.1 程序语言分类(执行方式): 1.2 python程序语法元素分析: 1.3 python保留字 2.python绘图 2.1 编程语言概述 2.2 t ...
- python搜索文献 速成_0基础5天速成Python,你也能发top期刊
最近在后台有很多朋友留言: "马上要毕业了,每天在家里找文献,写论文,但是校园网下载有限制.谷歌学术又经常崩,毕业论文一大堆参考文献需要导入,我该怎么办?" 作为研究人员,大家很多 ...
- Matplotlib入门 北理工嵩天老师python数据分析与展示 单元4随堂笔记
Matplotlib入门 北理工嵩天老师python数据分析与展示 单元4随堂笔记 Matplotlib库的使用 Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发. matp ...
- 嵩天老师-Python语言程序设计-Python123配套练习测验题目汇总整理
测验1:Python基本语法元素 知识点概要: 普遍认为Python语言诞生于1991年 Python语言中的缩进在程序中长度统一且强制使用,只要统一即可,不一定是4个空格(尽管这是惯例) IPO模型 ...
- 孙立岩 python-basic: 用于学习python基础的课件(一二三四)
python-basic: 用于学习python基础的课件 介绍 此部分讲解Python的基础,点击目录学习对应的小节: 01-简介,概述一下python: 02-环境搭建,如何在大家自己的windo ...
- Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题
字符串练习题 Python 切片 函数修饰符 #精度和进制 Python 字符串一些语句练 课件练习题 4,.by 字符串的替换 方法 描述 replac ...
- 中谷教育python精讲_中谷教育Python视频(课件、源码)推荐
<中谷教育Python视频教程>讲的是Python开发的入门教程,它将介绍Python语言的特点和适用范围,Python基本的数据类型,条件判断和循环,函数,以及Python特有的切片和列 ...
- 业余学python数据挖掘怎么赚钱_0基础转行学Python,学到什么地步能拿到月薪15k+?...
Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...
最新文章
- Python自动化办公系列之Python操作PDF
- mac 需要修复你的资源库才能运行应用软件
- 剑指Offer——二叉树的镜像
- 计算机专业和学历的关系!!重要!!
- 如何使用QuickConnect远程访问Synology NAS
- 自制hdmi线一头改vga图_东莞VGA数据线厂商价格
- Java任务完成后结算_Java执行程序:如何在任务完成时无阻碍地得到通知?
- Cisco 静态nat配置
- 如何用iMazing Profile Editor编辑配置文件
- 一键关闭Windows所有帐号UAC用户帐号控制
- Mac 安装 MAT内存分析工具
- 在Excel中批量生成条形码
- java地铁售票机系统_Java_地铁购票系统
- Qos报文分类和标记原理与实验
- Mac新手扫盲教程:苹果Mac电脑使用小技巧
- 联想笔记本windows10设备管理器找不到蓝牙
- 分享一下PPT常规使用方法和技巧
- eap协议 c语言,CCNP无线技术知识点-EAP和EAPOL协议报文详解
- 石子游戏大合集[博弈论]
- [Swift]LeetCode611. 有效三角形的个数 | Valid Triangle Number