Python爬虫个人记录(二) 获取fishc 课件下载链接
这此教程可能会比较简洁,具体细节可参考我的第一篇教程:
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 课件下载链接相关推荐
- Python 爬虫的工具列表( 附Github代码下载链接)
Python 爬虫的工具列表( 附Github代码下载链接) 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. gr ...
- [转] Python 爬虫的工具列表 附Github代码下载链接
转自http://www.36dsj.com/archives/36417 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests - ...
- Python 爬虫的工具列表 附Github代码下载链接
这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...
- 转] Python 爬虫的工具列表 附Github代码下载链接
转自http://www.36dsj.com/archives/36417 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests - ...
- python爬虫入门教程(二):开始一个简单的爬虫
2019/10/28更新 使用Python3,而不再是Python2 转载请注明出处:https://blog.csdn.net/aaronjny/article/details/77945329 爬 ...
- python爬虫,记录爬取全球所有国家-首都的简单爬虫
python爬虫,记录爬取全球所有国家-首都的简单爬虫 本来以为简单至极,没想到获取数据还是花费了大把功夫.先上图 <table> <tr> <td> <st ...
- Python 爬虫案例(二)--附件下载
Python 爬虫案例(二) 此篇文章将爬取的网站是:http://www.warrensburg-mo.com/Bids.aspx (有时候打开不一定会有标书,因为标书实时更新) 类型跟上一篇相似, ...
- Python爬虫系列(二):爬取中国大学排名丁香园-用户名和回复内容淘宝品比价
Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品比价 目录 Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品 ...
- Python爬虫教程(二)
一.bs4解析介绍 1.bs4解析:BS4全称是Beatiful Soup,它提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,自动将输入文档转换为Uni ...
- Python 爬虫入门(二)—— IP代理使用 - 不剃头的一休哥 - 博客园
Python 爬虫入门(二)-- IP代理使用 - 不剃头的一休哥 - 博客园 Python 爬虫入门(二)-- IP代理使用 - 不剃头的一休哥 - 博客园 posted on 2016-01-26 ...
最新文章
- HCIA-Datacom新版数通认证都考什么内容?
- 提高网站首页载入速度的常用方法
- push模式的水晶报表,参数的设置要放在数据源设置之后
- 电脑CPU选购的几个指标
- 35. 脱壳篇-UPX和WinUpack压缩壳的使用和脱法
- 服务器项目有哪些,怎么部署项目到服务器?服务器的特性有哪些?
- 一辆特斯拉Model S在比利时充电时起火 充电桩也被烧焦
- 关于http协议中的服务器状态情况
- k8s nod rc service 使用
- oracle java 面试题及答案_Oracle面试题及答案
- HDL4SE:软件工程师学习Verilog语言(四)
- ios uiswitch 开关_IOS开发(四):开关控件UISwitch
- 五款服装连锁店进销存软件排名推荐
- 华东理工大学本科毕业论文答辩和论文选题PPT模板
- 2003系统服务器不设置密码,服务器2003怎么设置密码
- 2018金山WPS实习面试
- 为什么说买腾讯云服务器通过代理商购买更划算
- [Android]Tablayout:修改指示器indicator的宽度
- Zbar的安装及环境配置(环境:VS2022、64位Win10、OpenCV3.6.0)
- #腾讯会议:728-974-0882