在报告前面,先放一些困扰我很久的debug 让我终生铭记的debug
就是这个所谓的unexpected indent 让我删了一次又一次的new.py 重新改又重新传输上去开始爬 一遍又一遍的在百度和同学之间询问求解 着实令我难忘!从缩进用tab和空格开始改 然后改到每一个符号(,:)最后改到行之间是否需要空行 。这一个问题周周转转得有个几十次循环。
然后是invalid syntax 又是一个格式方面的问题 和前面差不多 改的方式都差不多 就不多说 反正也很不容易啊!
然后就是比较核心的问题了 在spider的上层目录里没有改好items文件 导致后面不断出现路径上的错误 后来直接新建了一个工程 一步一步往目录里面走 重写了item.py 然后参考了郭盛镶同学的报告 将starturl改正为http://ggglxy.scu.edu.cn/index.phpc=article&a=type&tid=18&page_1_page=1
避免了爬不到数据的情况。
以上为修改后的item文件
import scrapy
from ggteachers.items import GgteachersItem
class TeachersSpider(scrapy.Spider):
name = "teachers"
start_urls = [
'http://ggglxy.scu.edu.cn/index.php?c=article&a=type&tid=18&page_1_page=1',
]
def parse(self, response):
for href in response.css('div.right_info.p20 ul.teachers_ul.mt20.cf li.fl div.l.fl a::attr(href)'):
url = response.urljoin(href.extract())
yield scrapy.Request(url, callback=self.parse1)
next_page = response.css('div.w780.pb30.mb30.fr div.right_info.p20 div.pager.cf.tc.pt10.pb10.mobile_dn li.c::text').extract_first()
if next_page is not None:
next_url = int(next_page) + 1
next_urls = '?c=article&a=type&tid=18&page%s' % next_url
print next_urls
next_urls = response.urljoin(next_urls)
yield scrapy.Request(next_urls,callback = self.parse)
def parse1(self, response):
items = []
for second in response.css('div.js_infobox.cf'):
item = GgteachersItem()
item['names'] = second.css('div.r.fr h3::text').extract_first(),
item['career'] = second.css('div.r.fr p::text').extract_first(),
item['intro'] =second.css('div.desc::text').extract_first(),
items.append(item)
return items
以上为spider代码
然后开始执行
然后是爬取数据的部分截图
![D~`A_H4Y29QUTZ(]LWA8Q)A.png](http://upload-images.jianshu.io/upload_images/5886630-4e14a6e308d7c8dd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
然后出现了与郭盛镶同学一样的问题 参考了他的解决方法后 下载保存
scrapy crawl teachers -o teachers.json
sz teachers.json
然后就succeed了
显然 是我高兴的太早了 只爬到了少量的老师简介 明天上午再看吧 要断网了
以上