这里对北理爬虫课程第四周内容回顾,本周主要介绍了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相关推荐

  1. 嵩天老师python爬虫笔记整理week3

    这里对北理爬虫课程第三周内容回顾,本周主要介绍了正则表达式 1.正则表达式的概念 正则表达式是用来简洁表达一组字符串的表达式 正则表达式是一种通用的字符串表达框架 进一步 正则表达式是一种针对字符串表 ...

  2. 【python】Python语言程序设计/嵩天老师入门课程笔记整理

    分章节目录 1.python开发环境配置 1.1 程序语言分类(执行方式): 1.2 python程序语法元素分析: 1.3 python保留字 2.python绘图 2.1 编程语言概述 2.2 t ...

  3. python搜索文献 速成_0基础5天速成Python,你也能发top期刊

    最近在后台有很多朋友留言: "马上要毕业了,每天在家里找文献,写论文,但是校园网下载有限制.谷歌学术又经常崩,毕业论文一大堆参考文献需要导入,我该怎么办?" 作为研究人员,大家很多 ...

  4. Matplotlib入门 北理工嵩天老师python数据分析与展示 单元4随堂笔记

    Matplotlib入门 北理工嵩天老师python数据分析与展示 单元4随堂笔记 Matplotlib库的使用 Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发. matp ...

  5. 嵩天老师-Python语言程序设计-Python123配套练习测验题目汇总整理

    测验1:Python基本语法元素 知识点概要: 普遍认为Python语言诞生于1991年 Python语言中的缩进在程序中长度统一且强制使用,只要统一即可,不一定是4个空格(尽管这是惯例) IPO模型 ...

  6. 孙立岩 python-basic: 用于学习python基础的课件(一二三四)

    python-basic: 用于学习python基础的课件 介绍 此部分讲解Python的基础,点击目录学习对应的小节: 01-简介,概述一下python: 02-环境搭建,如何在大家自己的windo ...

  7. Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题

    字符串练习题 Python 切片 函数修饰符 #精度和进制 Python 字符串一些语句练 课件练习题 4,.by     字符串的替换         方法    描述         replac ...

  8. 中谷教育python精讲_中谷教育Python视频(课件、源码)推荐

    <中谷教育Python视频教程>讲的是Python开发的入门教程,它将介绍Python语言的特点和适用范围,Python基本的数据类型,条件判断和循环,函数,以及Python特有的切片和列 ...

  9. 业余学python数据挖掘怎么赚钱_0基础转行学Python,学到什么地步能拿到月薪15k+?...

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

最新文章

  1. Python自动化办公系列之Python操作PDF
  2. mac 需要修复你的资源库才能运行应用软件
  3. 剑指Offer——二叉树的镜像
  4. 计算机专业和学历的关系!!重要!!
  5. 如何使用QuickConnect远程访问Synology NAS
  6. 自制hdmi线一头改vga图_东莞VGA数据线厂商价格
  7. Java任务完成后结算_Java执行程序:如何在任务完成时无阻碍地得到通知?
  8. Cisco 静态nat配置
  9. 如何用iMazing Profile Editor编辑配置文件
  10. 一键关闭Windows所有帐号UAC用户帐号控制
  11. Mac 安装 MAT内存分析工具
  12. 在Excel中批量生成条形码
  13. java地铁售票机系统_Java_地铁购票系统
  14. Qos报文分类和标记原理与实验
  15. Mac新手扫盲教程:苹果Mac电脑使用小技巧
  16. 联想笔记本windows10设备管理器找不到蓝牙
  17. 分享一下PPT常规使用方法和技巧
  18. eap协议 c语言,CCNP无线技术知识点-EAP和EAPOL协议报文详解
  19. 石子游戏大合集[博弈论]
  20. [Swift]LeetCode611. 有效三角形的个数 | Valid Triangle Number

热门文章

  1. php yield Generator 处理大数组
  2. 计算机毕业设计 SSM网上购物商城系统(源码+论文)
  3. python字典取键值对_python 获取字典键值对的实现
  4. 微信小程序解析unionid
  5. Spfa算法总结(C/C++)
  6. mkv封装字幕乱码问题
  7. Linux下使用命令解压.war文件的问题
  8. Microsoft .NET Remoting:技术概述
  9. Fortify SCA 源代码安全测试工具-----介绍
  10. Cadence orcad 原理图导出带书签目录的办法