python之scrapy实战篇(爬取电影网站的相关信息)

编程入门 行业动态 更新时间:2024-10-13 04:21:44

python之scrapy实战篇(爬取电影网站的<a href=https://www.elefans.com/category/jswz/34/1729831.html style=相关信息)"/>

python之scrapy实战篇(爬取电影网站的相关信息)

缘由:

由于我是一个比较喜欢看电影的人,但是又是个孩子,所以技术改变生活,虽然说直接打开浏览器下载就好了,但是我懒,所以借此机会用Scrapy框架来简单爬取一个电影网站

需要获取的信息:

--电影名称
--上映日期
--影片分类(我不看恐怖片)
--剧情介绍(这是一定要看的)
--下载地址(迅雷,我用这个 --> 迅雷打钱)

分析网页

图中箭头部分就是主页我们想要的部分,想要爬取其他部分也可以更改css选择器的部分代码。

查看源码
观察标签的路径,就有了初步的了解,方便我们下一步解析

开始scrapy-spider爬虫书写

进入自己想进入的文件夹,在cmd窗输入
–scrapy startproject Movies-Spider
创建scrapy工程
进入项目工程下的Spider目录,创建我们自己的spider文件

这样我们就创建好了我们的scrapy项目,并加入到相关文件夹中创建了一个Movies.py文件。

开始编写相关代码

在此之前,我们需要关闭在scrapy工程文件中setting.py的服从robot.txt规则,改为不服从。

#Obey robots.txt rules
ROBOTSTXT_OBEY = False

伪装自己

具体可看浏览器伪装

在item.py中设置返回项,以便我们保存文件

编写spider
import scrapy
import re, requests
from Movies.items import MoviesItemclass moviesSpider(scrapy.Spider):name = "Movies"  # Spider Name if you want to run spider you can get in folder and execute the order : scrapy crawl Moviesstart_urls = ['/?tz']  # which url we want to requestUrl = ""link = ""def getLink(self, i):Bs = {'user-agent': 'Firefox/18.1.0.2145'}url = "" + self.Url[i]r = requests.get(url, headers=Bs, timeout=60)r.encoding = r.apparent_encodingpattern = repile(r'generate_down(.*?);', re.S)Mess = re.findall(pattern, r.text)link = Mess[0]link = link[2:]self.link = link[:-2]def Sec_prase(self, response):# <div class="row1"><div class="left">影片名称:</div><div class="row_right"><strong>蜘蛛侠:平行宇宙BD高清中英双字</strong></div></div>Movies = MoviesItem()Movies['name'] = response.css('div.row_right strong::text').get()Movies['classify'] = response.css('div.row_right a::text').get()Movies['introduce'] = response.css('div.text::text').get()Movies['download'] = self.linkyield Moviesdef parse(self, response):for div in response.css('div.title'):# yield {#     #     'sidebar-title': div.css('a::text').getall(),#     's': div.css('a::attr(href)').getall(),#    # 'len': len(div.css('a::attr(href)').getall())# }self.Url = div.css('a::attr(href)').getall()for i in range(len(self.Url)):self.getLink(i)if self.Url[i] is not None:yield response.follow(self.Url[i], callback=self.Sec_prase)

运行效果图

在cmd窗口输入scrapy crawl Movies -o mo.csv即可获得数据存储成本地文件。

更多推荐

python之scrapy实战篇(爬取电影网站的相关信息)

本文发布于:2024-02-14 04:29:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761618.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:相关信息   电影网站   实战篇   python   scrapy

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!