爬虫_电影天堂 热映电影(xpath)
写了一天才写了不到100行。不过总归是按自己的思路完成了
import requests
from lxml import etree
import time BASE = 'http://www.dytt8.net'
def get_one_page(url):
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36'}
try: response = requests.get(url, headers=headers)
response.encoding = response.apparent_encoding
return response.text
except:
return 0 def parse_one_page_href(html):
str_hrefs = []
html_element = etree.HTML(html)
# //div[@class="co_content8"]/ul/table//a/@href
hrefs = html_element.xpath('//table[@class="tbspan"]//a/@href')
for href in hrefs:
href = BASE + href
str_hrefs.append(href)
return str_hrefs """
return
['http://www.dytt8.net/html/gndy/dyzz/20180731/57193.html',
'http://www.dytt8.net/html/gndy/dyzz/20180730/57192.html',
......
'http://www.dytt8.net/html/gndy/dyzz/20180702/57064.html',
'http://www.dytt8.net/html/gndy/dyzz/20180630/57056.html']
""" def get_all_pages(page_nums):
hrefs = []
for index in range(1, page_nums + 1):
url = 'http://www.dytt8.net/html/gndy/dyzz/list_23_' + str(index) + '.html'
html = get_one_page(url)
while html == 0:
time.sleep(3)
html = get_one_page(url)
hrefs.extend(parse_one_page_href(html))
return hrefs def get_detail(page_nums):
movie = []
hrefs = get_all_pages(page_nums)
for href in hrefs: #href: every page url
informations = {} response = requests.get(href)
response.encoding = response.apparent_encoding
html = response.text html_element = etree.HTML(html) title = html_element.xpath('//font[@color="#07519a"]/text()')[0]
informations['title'] = title image_src = html_element.xpath('//p//img/@src')
informations['image_src'] = image_src[0] download_url = html_element.xpath('//td[@bgcolor="#fdfddf"]/a/@href')
informations['download_url'] = download_url texts = html_element.xpath('//div[@id="Zoom"]//p/text()')
for index, text in enumerate(texts): if text.startswith('◎片 名'):
text = text.replace('◎片 名', '').strip()
informations['english_name'] = text elif text.startswith('◎产 地'):
text = text.replace('◎产 地', '').strip()
informations['location'] = text elif text.startswith('◎上映日期'):
text = text.replace('◎上映日期', '').strip()
informations['date'] = text elif text.startswith('◎片 长'):
text = text.replace('◎片 长', '').strip()
informations['time'] = text elif text.startswith('◎导 演'):
text = text.replace('◎导 演', '').strip()
informations['director'] = text elif text.startswith('◎主 演'):
text = text.replace('◎主 演', '').strip()
actors = []
actors.append(text)
for x in range(index+1, len(texts)):
actor = texts[x].strip()
if texts[x].startswith('◎简 介'):
break
actors.append(actor)
informations['actors'] = actors elif text.startswith('◎简 介 '):
text = text.replace('◎简 介 ', '').strip()
intros = []
# intros.append(text)
for x in range(index+1, len(texts)):
intro = texts[x].strip()
if texts[x].startswith('◎获奖情况'):
break
intros.append(intro)
informations['intros'] = intros
movie.append(informations)
return movie def main():
page_nums = 1 #
movie = get_detail(page_nums)
print(movie) if __name__ == '__main__':
main()
运行结果:(选中的是一部电影, 一页中有25部电影,网站里一共有176页)

感受到了代码的魅力了吗
爬虫_电影天堂 热映电影(xpath)的更多相关文章
- python爬虫——爬取淘票票正在热映电影
今天正好学习了一下python的爬虫,觉得收获蛮大的,所以写一篇博客帮助想学习爬虫的伙伴们. 这里我就以一个简单地爬取淘票票正在热映电影为例,介绍一下一个爬虫的完整流程. 首先,话不多说,上干货——源 ...
- Node.js 抓取电影天堂新上电影节目单及ftp链接
代码地址如下:http://www.demodashi.com/demo/12368.html 1 概述 本实例主要使用Node.js去抓取电影的节目单,方便大家使用下载. 2 node packag ...
- 爬虫_豆瓣全部正在热映电影 (xpath)
单纯地练习一下xpath import requests from lxml import etree def get_url(url): html = requests.get(url) retur ...
- python爬虫——词云分析最热门电影《后来的我们》
1 模块库使用说明 1.1 requests库 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更 ...
- python利用requests和threading模块,实现多线程爬取电影天堂最新电影信息。
利用爬到的数据,基于Django搭建的一个最新电影信息网站: n1celll.xyz (用的花生壳动态域名解析,服务器在自己的电脑上,纯属自娱自乐哈.) 今天想利用所学知识来爬取电影天堂所有最新电影 ...
- LOL电影天堂下载攻略
LOL电影天堂&&飘花电影网下载攻略 CreateTime--2017年7月27日08:52:29Author:Marydon 以进击的巨人为例 下载地址:http://www.l ...
- Python多线程爬虫爬取电影天堂资源
最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...
- scrapy电影天堂实战(二)创建爬虫项目
公众号原文 创建数据库 我在上一篇笔记中已经创建了数据库,具体查看<scrapy电影天堂实战(一)创建数据库>,这篇笔记创建scrapy实例,先熟悉下要用到到xpath知识 用到的xpat ...
- 用python+selenium抓取豆瓣电影中的正在热映前12部电影并按评分排序
抓取豆瓣电影(http://movie.douban.com/nowplaying/chengdu/)中的正在热映前12部电影,并按照评分排序,保存至txt文件 #coding=utf-8 from ...
随机推荐
- D - Nature Reserve(cf514,div2)
题意:给出n(n<=1e5)个点,求一个最小的圆,与x轴相切,并且包含这n个点 思路:我第一想到的是,这个圆一定会经过一个点,再根据与x轴相切,我们可以找到最小的圆,让它包含其余的点,但是如何判 ...
- 关于XLL加载项动态加载、卸载的演示及XLL函数自定义类型注册的演示
1.在XLL中,把函数定义成不同的类型,在Excel中的实际效果也不同,具体如下: pxMacroType value ...
- iOS开发造轮子 | 通用占位图
https://www.jianshu.com/p/beca3ac24031 实际运用场景: 没网时的提示view,tableView或collectionView没内容时的展示view,以及其它特殊 ...
- c++局部变量在外可用的方法
C++的局部变量在作用域结束后,一般都会被回收.如下面这段代码 map<a*, b*> _map; void fun() { a _a; b _b; _map[&_a] = &am ...
- 如何使用 Docker 来限制 CPU、内存和 IO等资源?
如何使用 Docker 来限制 CPU.内存和 IO等资源?http://www.sohu.com/a/165506573_609513
- asp.net mvc Areas 母版页动态获取数据进行渲染
经常需要将一些通用的页面元素抽离出来制作成母版页,但是这里的元素一般都是些基本元素,即不需要 进行后台数据交换的基本数据,但是对于一些需要通过后台查询的数据,我们应该怎么传递给前台的母版页呢 这里描述 ...
- Composer之搭建自己的包工具
作为一个标准的PHPer,必须学会优雅的使用composer,最近,萌生了一个想法,我们每搭建一个项目,里面都会有许多的公用的方法和类库,每次使用的时候就是将其拷贝过来,或者重新写一遍,过于繁琐,效率 ...
- js-XMLHttpRequest 2级
###1. XMLHttpRquest 2级 1) FormData 现代web应用中频繁使用的一项功能就死表单数据的序列化, XMLHttpRquest 2级为此定义了FormData类型 Fo ...
- php 将数组转换网址URL参数
$array =array ( 'id' =123, 'name' = 'dopost' );echo http_build_query( $array );//得到结果id=123name=dopo ...
- python学习笔记(5-1)-基本数据类型-字符串类型及操作
五.字符串处理函数 len(x):字符串x的长度.如len("12345")结果为5 str(x):任意类型x所对应的字符串形式. >>> str(123) ...