scrapy爬取迅雷电影天堂最新电影ed2k
前言
几天没用scrapy爬网站了,正好最近在刷电影,就想着把自己常用的一个电影分享网站给爬取下来保存到本地mongodb中
项目开始
第一步仍然是创建scrapy项目与spider文件
切换到工作目录两条命令依次输入
- scrapy startproject xunleidianying
- scrapy genspider xunleiBT https://www.xl720.com/thunder/years/2019
内容分析
打开目标网站(分类是2019年上映的电影),分析我们需要的数据
进入页面是列表的形式就像豆瓣电影一样,然后我们点进去具体页面看看
这个页面就是我们需要拿到的内容页面,我们来看我们需要哪些数据(某些数据从第一个页面就可以获得,但是下载地址必须到第二个页面)
- 电影名称
- 电影信息
- 电影内容剧情
- 电影下载地址
分析完成之后就可以首先编写 items.py文件
import scrapy class XunleidianyingItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
name = scrapy.Field()
information = scrapy.Field()
content = scrapy.Field()
downloadurl = scrapy.Field()
pass
另外别忘了去settings.py中开启 ITEM_PIPELINES 选项
爬虫文件编写
老样子,为了方便测试我们的爬虫,首先编写一个main.py的文件方便IDE调用
main.py:
import scrapy.cmdline
scrapy.cmdline.execute('scrapy crawl xunleiBT'.split())
首先我们先测试直接向目标发送请求是否可以得到响应
爬虫文件 xunleiBT.py编写如下:
# -*- coding: utf-8 -*-
import scrapy class XunleibtSpider(scrapy.Spider):
name = 'xunleiBT'
allowed_domains = ['https://www.xl720.com/thunder/years/2019']
start_urls = ['https://www.xl720.com/thunder/years/2019/'] def parse(self, response):
print(response.text)
pass
运行 main.py 看看会出现什么
好的,发现直接返回正常的网页也就是我们要的网页,说明该网站没有反爬机制,这样我们就更容易爬取了
然后通过xpath定位页面元素,具体就不再赘述,之前的scarpy教程中都有 继续编写爬虫文件
# -*- coding: utf-8 -*-
import scrapy
#导入编写的 item
from xunleidianying.items import XunleidianyingItem class XunleibtSpider(scrapy.Spider):
name = 'xunleiBT'
allowed_domains = ['www.xl720.com']
start_urls = ['https://www.xl720.com/thunder/years/2019/'] def parse(self, response):
url_list = response.xpath('//h3//@href').getall()
for url in url_list:
yield scrapy.Request(url,callback=self.detail_page)
nextpage_link = response.xpath('//a[@class="nextpostslink"]/@href').get()
if nextpage_link:
yield scrapy.Request(nextpage_link, callback=self.parse) def detail_page(self,response):
# 切记item带括号
BT_item = XunleidianyingItem()
BT_item['name'] = response.xpath('//h1/text()').get()
BT_item['information'] = ''.join(response.xpath('//div[@id="info"]//text()').getall())
BT_item['content'] = response.xpath('//div[@id="link-report"]/text()').get()
BT_item['downloadurl'] = response.xpath('//div[@class="download-link"]/a/text() | //div[@class="download-link"]/a/@href').getall()
yield BT_item
ITEM爬取完成后该干什么?当然是入库保存了,编写pipelines.py文件进行入库保存
再次提醒别忘了去settings.py中开启 ITEM_PIPELINES 选项
pipelines.py文件代码如下:
import pymongo
#连接本地数据库
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
#数据库名称
mydb = myclient["movie_BT"]
#数据表名称
mysheet = mydb["movie"] class XunleidianyingPipeline(object):
def process_item(self, item, spider):
data = dict(item)
mysheet.insert(data)
return item
再次运行main.py 等待运行完成后打开数据库查询
数据保存完成,这次我们一共导入了380个数据,可以愉快的查看电影了
scrapy爬取迅雷电影天堂最新电影ed2k的更多相关文章
- python利用requests和threading模块,实现多线程爬取电影天堂最新电影信息。
利用爬到的数据,基于Django搭建的一个最新电影信息网站: n1celll.xyz (用的花生壳动态域名解析,服务器在自己的电脑上,纯属自娱自乐哈.) 今天想利用所学知识来爬取电影天堂所有最新电影 ...
- scrapy爬取豆瓣电影top250
# -*- coding: utf-8 -*- # scrapy爬取豆瓣电影top250 import scrapy from douban.items import DoubanItem class ...
- Python爬虫爬取BT之家找电影资源
一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在 ...
- scrapy 动态网页处理——爬取鼠绘海贼王最新漫画
简介 scrapy是基于python的爬虫框架,易于学习与使用.本篇文章主要介绍如何使用scrapy爬取鼠绘漫画网海贼王最新一集的漫画. 源码参见:https://github.com/liudaol ...
- 以豌豆荚为例,用 Scrapy 爬取分类多级页面
本文转载自以下网站:以豌豆荚为例,用 Scrapy 爬取分类多级页面 https://www.makcyun.top/web_scraping_withpython17.html 需要学习的地方: 1 ...
- scrapy爬取海量数据并保存在MongoDB和MySQL数据库中
前言 一般我们都会将数据爬取下来保存在临时文件或者控制台直接输出,但对于超大规模数据的快速读写,高并发场景的访问,用数据库管理无疑是不二之选.首先简单描述一下MySQL和MongoDB的区别:MySQ ...
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- 小说免费看!python爬虫框架scrapy 爬取纵横网
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...
- Scrapy爬取美女图片 (原创)
有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...
随机推荐
- 安装VMware Workstation时遇到Microsoft Runtime DLL安装程序未能完成安装
解决:这时不要点确定.开始菜单运行输入‘%temp%’,在弹出的窗体中找到一个文件名中含‘{XXXXXXXXXXXXX}~setup'的文件夹,打开里面会看到有 xxx.msi的,运行就开始vmwar ...
- 使用css实现水平垂直居中
1.通过absolute和margin实现(适用于弹窗,具体位置随浏览器屏幕大小变化改变)这种方式需要居中元素的父级必须采用绝对定位或相对定位,被居中元素的尺寸需要固定. <div class= ...
- 百度地图小Demo---获取当前地址以及拖拽显示地址
1.效果图 2.源码 主要使用百度地图的JavaScript API文件,以及一个JQuery文件. <!doctype html> <html lang="en" ...
- Win10中用yolov3训练自己的数据集全过程(VS、CUDA、CUDNN、OpenCV配置,训练和测试)
在Windows系统的Linux系统中用yolo训练自己的数据集的配置差异很大,今天总结在win10中配置yolo并进行训练和测试的全过程. 提纲: 1.下载适用于Windows的darknet 2. ...
- markdown 使用示例,包含常用的标题、图片、文字样式、代码块、链接等
ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/Markdown%E7%A4%BA%E4%BE%8B # ...
- winform和WPF的那点事~
一.定义 1.Winform的定义: WinForm是·Net开发平台中对Windows Form的一种称谓. 2.WPF的定义: WPF(Windows Presentation Foundatio ...
- CodeForces 812E Sagheer and Apple Tree 树上nim
Sagheer and Apple Tree 题解: 先分析一下, 如果只看叶子层的话. 那么就相当于 经典的石子问题 nim 博弈了. 那我们看非叶子层. 看叶子层的父亲层. 我们可以发现, 如果从 ...
- Ryuji doesn't want to study 2018徐州icpc网络赛 树状数组
Ryuji is not a good student, and he doesn't want to study. But there are n books he should learn, ea ...
- ZOJ 3872 Beauty of Array 连续子序列求和
Edward has an array A with N integers. He defines the beauty of an array as the summation of all dis ...
- 通过CMD命令窗口获取django版本号
通过CMD命令窗口获取django版本号 方法一: C:\Users\Administrator>python >>> import django >>> d ...