1. 用Python爬虫爬取爱奇艺上的VIP电影视频,是违法行为吗
属于违法行为,情节严重者,爱奇艺将有权对您追究法律责任
2. python爬虫看电影会有什么影响
闲着在家想看电影,但是猛地不知道要看啥电影,脑子想半天也想不出来一个好电影名字!干脆直接在豆瓣电影上获取最近热门的电影,然后一个一个挨着看打发时间!
获取豆瓣电影信息也是学爬虫的一个入门例子,不知道为啥好多人学爬虫都拿豆瓣电影来练手,一个应该是爬取比较简单,另一个应该是这个平台反爬措施比较low,接下来让我们来看看怎么去实现获取豆瓣电影前200个热门电影信息!
1.请求数据
第一步先打开豆瓣电影网页,分析请求看怎样才能请求到数据。
刷新豆瓣电影网页,从浏览器自带的开发工具network中XHR可以看到各种请求,其中标黄的search_subject?type_movie这个请求就是请求电影信息,下面的type_tv就是请求电视剧信息的。从右边标黄的request url中看到是请求的链接,但参数信息都被编码,用urllib.parse.unquote()方法来进行解码:
解码后的请求连接如图所示,猜想page_limt为每次请求到的数据量,page_start为从第几页开始请求,将这个链接在浏览器中打开来验证一下猜想。
看到返回的是一个json字符串,里面包含50条电影信息,其中有名字,评分,链接等,将page_start = 0 变为1,就请求到下一个50条信息。根据链接的这个规律,可以对page_start 不断赋值,从而实现多条信息的获取!(公众号 ly戏说编程)
第二步构造请求头,即看看浏览器通过这个链接向服务器发送了什么请求参数才拿到这些json数据,打开浏览器开发者工具。
按照图中1到4步可以看到这个请求的request headers,将请求头里面的信息全部拿出来,构造为爬虫的请求头。
坑:请求头构造的时候Accept-Encoding要将br去掉。原因:Accept-Encoding用来声明浏览器支持的编码类型,一般有gzip,deflate,br 等等。但在python3的requests包中:
response.content 字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩 类型:bytes
reponse.text 字符串方式的响应体,会自动根据响应头部的字符编码进行解码。类型:str
但偏偏不支持br的解码,如果加上br可能造成你请求回来的是乱码!所以要去掉br!
这样通过模拟浏览器请求数据,就可以得到服务器返回的json字符串,再解析json字符串得到每一个电影的详情链接。
2.提取信息
在得到每一个电影的链接后,依次访问每一个电影的链接,然后根据关键信息所在标签用xpath进行提取。这里只对电影名字、年份、导演、类型、评分进行提取。
例如提取1917,在网页右击“1917”,然后选择检查,在Elements中1917所在位置右击,选择Copy,然后Copy XPath即可拿到1917的Xpath路径,其它信息的提取操作步骤一样。
但是不同电影网页里面相同类型的信息所在的XPath路径可能不同,这就需要找到他们的相同处,提取相同的XPath路径,从而进行大批量提取。
比如电影类型,用直接 xpath的方法就不好使,不同电影网页里面电影类型所处的标签位置不同,用 xpath拷贝出来的路径有差异,这就需要根据所在标签的property属性来获取。主要代码如下:
对每一网页链接里面的信息进行提取,这里每提取一个就停1s,为的是避免平台检测到异常访问,这样就拿到每一个电影的信息,然后再将这信息保存到excel中,效果如图所示
前几名都是奥斯卡得奖电影有木有!感兴趣的小伙伴快来试试!话不多说,挨着去看电影咯!去哪看?去公众号 ly戏说编程 首页vip影院看,里面还有各种学习资源免费分享!
3. python爬虫抓取电影top20排名怎么写
初步接触python爬虫(其实python也是才起步),发现一段代码研究了一下,觉得还比较有用处,Mark下。
上代码:
#!/usr/bin/python#coding=utf-8#Author: Andrew_liu#mender:cy"""
一个简单的Python爬虫, 用于抓取豆瓣电影Top前100的电影的名称
Anthor: Andrew_liu
mender:cy
Version: 0.0.2
Date: 2017-03-02
Language: Python2.7.12
Editor: JetBrains PyCharm 4.5.4
"""import stringimport reimport urllib2import timeclass DouBanSpider(object) :
"""类的简要说明
主要用于抓取豆瓣Top100的电影名称
Attributes:
page: 用于表示当前所处的抓取页面
cur_url: 用于表示当前争取抓取页面的url
datas: 存储处理好的抓取到的电影名称
_top_num: 用于记录当前的top号码
"""
def __init__(self):
self.page = 1
self.cur_url = "h0?start={page}&filter=&type="
self.datas = []
self._top_num = 1
print u"豆瓣电影爬虫准备就绪, 准备爬取数据..."
def get_page(self, cur_page):
"""
根据当前页码爬取网页HTML
Args:
cur_page: 表示当前所抓取的网站页码
Returns:
返回抓取到整个页面的HTML(unicode编码)
Raises:
URLError:url引发的异常
"""
url = self.cur_url try:
my_page = urllib2.urlopen(url.format(page=(cur_page - 1) * 25)).read().decode("utf-8") except urllib2.URLError, e: if hasattr(e, "code"): print "The server couldn't fulfill the request."
print "Error code: %s" % e.code elif hasattr(e, "reason"): print "We failed to reach a server. Please check your url and read the Reason"
print "Reason: %s" % e.reason return my_page def find_title(self, my_page):
"""
通过返回的整个网页HTML, 正则匹配前100的电影名称
Args:
my_page: 传入页面的HTML文本用于正则匹配
"""
temp_data = []
movie_items = re.findall(r'<span.*?class="title">(.*?)</span>', my_page, re.S) for index, item in enumerate(movie_items): if item.find(" ") == -1:
temp_data.append("Top" + str(self._top_num) + " " + item)
self._top_num += 1
self.datas.extend(temp_data) def start_spider(self):
"""
爬虫入口, 并控制爬虫抓取页面的范围
"""
while self.page <= 4:
my_page = self.get_page(self.page)
self.find_title(my_page)
self.page += 1def main():
print u"""
###############################
一个简单的豆瓣电影前100爬虫
Author: Andrew_liu
mender: cy
Version: 0.0.2
Date: 2017-03-02
###############################
"""
my_spider = DouBanSpider()
my_spider.start_spider()
fobj = open('/data/moxiaokai/HelloWorld/cyTest/blogcode/top_move.txt', 'w+') for item in my_spider.datas: print item
fobj.write(item.encode("utf-8")+'
')
time.sleep(0.1) print u"豆瓣爬虫爬取完成"if __name__ == '__main__':
main()
运行结果:
4. 如何利用Python来爬取网页视频呢
前几天写了个爬虫,用path、re、BeautifulSoup爬取的B站python视频,但是这个爬虫有有个缺陷,没能获取视频的图片信息,如果你去尝试你会发现它根本就不在返回的结果里面。今天就用分析Ajax的方法获取到。
分析页面
点一下搜索,这个url才会出现数烂神,或者点一下下一页
然后就构造这历知个请求就可以了。需要注意的是最后一个参数不能添加。
代码实战
代码里面有些解释已经很清楚了,在这里再次复习一下
re.sub()
这个函数传入五个参数,前三个是必须传入的pattern,、repl、string
第一个是表示的是正则表达式中模式字符串
第二个是要被替换的字符串
第三个是文本字符串剩下两个可选参数,一个是count一个是薯亏flag。
时间戳转换成标准格式的时间第一种方法
第二种方法
综上就是这次的全部内容,多加练习继续加油!
5. python爬虫可以爬视频吗
当然可以,网上的一切资源皆为数据,爬虫都可以爬取,包括文件、视频、音频、图片等。
6. Python爬虫之《电影天堂》电影详情+下载地址爬取
纪念自学Python以来,自己成功写出的第一个爬虫程序......
7. Python爬虫实战,Python多线程抓取5千多部最新电影下载链接
利用Python多线程爬了5000多部最新电影下载链接,废话不多说~
让我们愉快地开始吧~
Python版本: 3.6.4
相关模块:
requests模块;
re模块;
csv模块;
以及一些Python自带的模块。
安装Python并添加到环境变量,pip安装需要的相关模块即可。
拿到链接之后,接下来就是继续访问这些链接,然后拿到电影的下载链接
但是这里还是有很多的小细节,例如我们需要拿到电影的总页数,其次这么多的页面,一个线程不知道要跑到什么时候,所以我们首先先拿到总页码,然后用多线程来进行任务的分配
我们首先先拿到总页码,然后用多线程来进行任务的分配
总页数其实我们用re正则来获取
爬取的内容存取到csv,也可以写个函数来存取
开启4个进程来下载链接
您学废了吗?最后祝大家天天进步!!学习Python最重要的就是心态。我们在学习过程中必然会遇到很多难题,可能自己想破脑袋都无法解决。这都是正常的,千万别急着否定自己,怀疑自己。如果大家在刚开始学习中遇到困难,想找一个python学习交流环境,可以加入我们,领取学习资料,一起讨论,会节约很多时间,减少很多遇到的难题。
8. Python爬虫实战(1)requests爬取豆瓣电影TOP250
爬取时间:2020/11/25
系统环境:Windows 10
所用工具:Jupyter NotebookPython 3.0
涉及的库:requestslxmlpandasmatplotlib
umpy
蛋肥想法: 先将电影名称、原名、评分、评价人数、分类信息从网站上爬取下来。
蛋肥想法: print数据列表后发现电影原名、分类信息等存在不需要的字符,需预先处理;同时因为后续想做一个豆瓣电影TOP250的维度分布图,而同一电影存在多个发行国家、类型(如“法国 美国 / 剧情 动作 犯罪”),为了简(偷)便(懒),这里均取第一个作为记入的数据;最后将数据保存为xlsx。
蛋肥想法: 蛋肥想知道在豆瓣电影TOP250中年份、国家、类型的维度数据,为了练手,使用刚才保存成xlsx的数据,并分别画成雷达图、柱形图、扇形图。
9. 傻瓜如何一分钟利用Python爬取VIP电影
傻瓜如何一分钟利用Python爬取VIP电影
10. 怎样用python获取电影
实验室这段时间要采集电影的信息,给出了一个很大的数据集,数据集包含了4000多个电影名,需要我写一个爬虫来爬取电影名对应的电影信息。
其实在实际运作中,根本就不需要爬虫,只需要一点简单的Python基础就可以了。
前置需求:
Python3语法基础
HTTP网络基础
===================================
第一步,确定API的提供方。IMDb是最大的电影数据库,与其相对的,有一个OMDb的网站提供了API供使用。这家网站的API非常友好,易于使用。
第二步,确定网址的格式。
第三步,了解基本的Requests库的使用方法。