这此教程可能会比较简洁,具体细节可参考我的第一篇教程:
Python爬虫个人记录(一)豆瓣250

一、目的分析

获取http://bbs.fishc.com/forum-246-1.html 中小甲鱼零基础入门学习python课件以及源代码

即这玩意

二、步骤分析

1、进入http://bbs.fishc.com/forum-246-1.html
2、通过xpath()分析出一级连接
http://bbs.fishc.com/thread-36353-1-1.html
3、通过xpath()分析出二级下载链接
4、通过二级连接下载课件(失败)

三、scrapy shell 模拟分析

运行cmd ->scrapy shell

fetch('http://bbs.fishc.com/forum-246-1.html')

返回200成功

获取需要信息的xpath(记录一有),这里只再演示一次(qq浏览器版本)

鼠标放在所需元素,右键查看元素(或检查),copy xpath

得到 //*[@id=”normalthread_36353”]/tr/th/a[2]

在shell中测试

>>> response.xpath('//*[@id="normalthread_36353"]/tr/th/a[2]/text()').extract()
['第000讲 愉快的开始(视频+课件)']
>>>

成功
通过分析网页

所需要的网页都带有
//*[@id=”normalthread_数字”] 这样的特征

于是修改xpath()使用模糊查询
response.xpath(‘//table/*[contains(@id,“normalthread”)]/tr/th/a[2]’).extract()

>>> response.xpath('//*[@id="normalthread_36353"]/tr/th/a[2]/text()').extract()
['第000讲 愉快的开始(视频+课件)']
>>> response.xpath('//table/*[contains(@id,"normalthread")]/tr/th/a[2]/text()').extract()
['第000讲 愉快的开始(视频+课件)', '第001讲 我和Python的第一次亲密接触(视频+课件)', '第002讲 用Python设计第一个游戏(视频+课件+源代码)', '第003讲 小插曲之变量和字符串(视频+课件)', '第004讲 改进我们的小游戏(视频+课件+源代码)', '第005讲 改进我们的小游戏(视频+课件+源代码)', '第006讲 Pyhon之常用操作符(视频+课件)', '第007讲 了不起的分支和循环01(视频+课件)', '第008讲 了不起的分支和循环02(视频+课件+源代码)', '第009讲 了不起的分支和循环03(视频+课件+源代码)', '第010 讲 列表:一个打了激素的数组(视频+课件)', '第011讲 列表:一个打了激素的数组2(视频+课件)', '第012讲 列表:一个打了激素的数组3(视频+课件)', '第013讲 元组:戴上了枷锁的列表(视频+课件)', '第014讲 字符串:各种奇葩的内置方法(视频+课件)', '第015讲 字符串:格式化(视频+课件)', '第016讲 序列!序列!(视频+课件)', '第017讲 函数:Python的乐高积木(视频+课件+源代码)', '第018讲 函数:灵活即强大(视频+课件)', '第019讲 函数:我的地盘听我的(视频+课件+源代码)', '第020讲 函数: 内嵌函数和闭包(视频+课件)', '第021讲 函数:lambda表达式(视频+课件)', '第022讲 函数:递归是神马(视频+课件+源代码)', '第023讲 递归:这帮坑爹的小兔崽子(视频+课件+源代码)', '第024讲 递归:汉诺塔(视频+课件+源代码)', '第025讲 字典:当索引不好用时(视频+课件)', '第026讲 字典:当索引不好用时2(视频+课件)', '第027讲 集合:在我的世界里,你就是唯一(视频+课件)', '第028讲 文件:因为懂你,所以永恒(视频+课件)', '第029讲 文件:一个任务(视频+课件+源代码)', '第030讲 文件系统 :介绍一个高大上的东西(视频)', '第031讲 永久存储:腌制一缸美味的泡菜(视频+课件+源代码)']
>>>

成功获取所需要元素,接下来获取相对应地址
同上不难分析出网页连接地址xpath为
“//table/*[contains(@id,’nor’)]/tr/th/a[2]/@href”

>>> response.xpath("//table/*[contains(@id,'nor')]/tr/th/a[2]/@href").extract()
['thread-36353-1-1.html', 'thread-36354-1-1.html', 'thread-38065-1-1.html', 'thread-38066-1-1.html', 'thread-38067-1-1.html', 'thread-38068-1-1.html', 'thread-38069-1-1.html', 'thread-38072-1-1.html', 'thread-43424-1-1.html', 'thread-43425-1-1.html', 'thread-43426-1-1.html', 'thread-43427-1-1.html', 'thread-43429-1-1.html', 'thread-43430-1-1.html', 'thread-43431-1-1.html', 'thread-43433-1-1.html', 'thread-43434-1-1.html', 'thread-43435-1-1.html', 'thread-43436-1-1.html', 'thread-43437-1-1.html', 'thread-43438-1-1.html', 'thread-43440-1-1.html', 'thread-43441-1-1.html', 'thread-43443-1-1.html', 'thread-43444-1-1.html', 'thread-43445-1-1.html', 'thread-43446-1-1.html', 'thread-45420-1-1.html', 'thread-45421-1-1.html', 'thread-45422-1-1.html', 'thread-48042-1-1.html', 'thread-48043-1-1.html']
>>>

至此可以书写python代码了

四、Python代码书写(细节参考记录一)

思路:
1、#获取一级链接
2、#获取二级文件下载链接
2、#打开二级文件下载链接,下载文件(这是个坑,会员才能下载。。。所以失败,方法后面使用cookie看能否解决)

import urllib.request
import os
from lxml import etree#打开一个网页操作
def url_open(url):req = urllib.request.Request(url)req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3226.400 QQBrowser/9.6.11681.400')response = urllib.request.urlopen(url)html = response.read()return html#保存多个文件
def save(folder, file_url):i = 0for each in file_url:#print(each)file_name = str(i)i += 1with open(file_name, 'w') as f:file = url_open(each)f.write(file)#保存一个文件
def save1():file_name = 'asd'with open(file_name, 'w') as f:f.write()def find_data(url = '', xrule = ''):result_data = []html = url_open(url)selector = etree.HTML(html)result_data = selector.xpath(xrule)return result_datadef test1():#获取一级链接list_1 = []xrule_1 = "//table/*[contains(@id,'nor')]/tr/th/a[2]/@href"for i in range(1,2):url = 'http://bbs.fishc.com/forum-246-' + str(i) + '.html'result_temp = find_data(url, xrule_1)for each in result_temp:list_1.append(each)print('http://bbs.fishc.com/' + each)#print(list_1)#获取二级文件下载链接list_2 = []xrule_2 = '//*[contains(@id,"attach")]/a/@href'for each in list_1:url = 'http://bbs.fishc.com/' + str(each)result_temp = find_data(url, xrule_2)for each in result_temp:list_2.append(each)print('http://bbs.fishc.com/' + each)#print(list_2)if __name__ == '__main__':test1()

直接上源码了,有一些注释,可以自行参考阅读

五、总结

失败的尝试。。原因:还学要学习下载链接原理

顺便打波小广告:I love fishc.com

欢迎来鱼c论坛学习^_^零基础入门学习python

Python爬虫个人记录(二) 获取fishc 课件下载链接相关推荐

  1. Python 爬虫的工具列表( 附Github代码下载链接)

    Python 爬虫的工具列表( 附Github代码下载链接) 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. gr ...

  2. [转] Python 爬虫的工具列表 附Github代码下载链接

    转自http://www.36dsj.com/archives/36417 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests - ...

  3. Python 爬虫的工具列表 附Github代码下载链接

    这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...

  4. 转] Python 爬虫的工具列表 附Github代码下载链接

    转自http://www.36dsj.com/archives/36417 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests - ...

  5. python爬虫入门教程(二):开始一个简单的爬虫

    2019/10/28更新 使用Python3,而不再是Python2 转载请注明出处:https://blog.csdn.net/aaronjny/article/details/77945329 爬 ...

  6. python爬虫,记录爬取全球所有国家-首都的简单爬虫

    python爬虫,记录爬取全球所有国家-首都的简单爬虫 本来以为简单至极,没想到获取数据还是花费了大把功夫.先上图 <table> <tr> <td> <st ...

  7. Python 爬虫案例(二)--附件下载

    Python 爬虫案例(二) 此篇文章将爬取的网站是:http://www.warrensburg-mo.com/Bids.aspx (有时候打开不一定会有标书,因为标书实时更新) 类型跟上一篇相似, ...

  8. Python爬虫系列(二):爬取中国大学排名丁香园-用户名和回复内容淘宝品比价

    Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品比价 目录 Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品 ...

  9. Python爬虫教程(二)

    一.bs4解析介绍    1.bs4解析:BS4全称是Beatiful Soup,它提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,自动将输入文档转换为Uni ...

  10. Python 爬虫入门(二)—— IP代理使用 - 不剃头的一休哥 - 博客园

    Python 爬虫入门(二)-- IP代理使用 - 不剃头的一休哥 - 博客园 Python 爬虫入门(二)-- IP代理使用 - 不剃头的一休哥 - 博客园 posted on 2016-01-26 ...

最新文章

  1. HCIA-Datacom新版数通认证都考什么内容?
  2. 提高网站首页载入速度的常用方法
  3. push模式的水晶报表,参数的设置要放在数据源设置之后
  4. 电脑CPU选购的几个指标
  5. 35. 脱壳篇-UPX和WinUpack压缩壳的使用和脱法
  6. 服务器项目有哪些,怎么部署项目到服务器?服务器的特性有哪些?
  7. 一辆特斯拉Model S在比利时充电时起火 充电桩也被烧焦
  8. 关于http协议中的服务器状态情况
  9. k8s nod rc service 使用
  10. oracle java 面试题及答案_Oracle面试题及答案
  11. HDL4SE:软件工程师学习Verilog语言(四)
  12. ios uiswitch 开关_IOS开发(四):开关控件UISwitch
  13. 五款服装连锁店进销存软件排名推荐
  14. 华东理工大学本科毕业论文答辩和论文选题PPT模板
  15. 2003系统服务器不设置密码,服务器2003怎么设置密码
  16. 2018金山WPS实习面试
  17. 为什么说买腾讯云服务器通过代理商购买更划算
  18. [Android]Tablayout:修改指示器indicator的宽度
  19. Zbar的安装及环境配置(环境:VS2022、64位Win10、OpenCV3.6.0)
  20. #腾讯会议:728-974-0882

热门文章

  1. 64位oracle plsql developer 下载地址,plsql developer
  2. 机器学习—模型超参数调优之网格搜索与随机搜索
  3. VMWare虚拟机Linux系统忘记登录密码
  4. Pascal voc 2012 数据集简介
  5. 批量修改图片格式类型
  6. LQR控制算法及其仿真实现
  7. 数据存储之SwiftJSON
  8. 在Ubuntu 将PHP5升级到PHP7.0 PHP7.1
  9. 集成电路制造工艺及设备
  10. 综合评价法之秩和比法(RSR)