- 33
- 0
import requests
from lxml import etree
def getHTML(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.content
except:
print('抓取失败')
def paraseHTML(ulist,html):
demo = etree.HTML(html)
selc=demo.xpath('//div[@class="info"]')
#ulist = [] 有这句就没有输出,为什么?
#序号
i = 0
for a in selc:
i=i+1
#导演那部分是以换行符分开的
#电影名
title = a.xpath('./div[@class="hd"]/a/span[@class="title"]/text()')[0]
infos = a.xpath('./div[@class="bd"]/p[@class=""]/text()')
#导演
direct = infos[0].strip().replace(u'\xa0',' ').split(' ')[0].split(':')[1]
date_country_classify = infos[1].strip().replace(u'\xa0',' ').split(' ')
#上映年份
year = date_country_classify[0]
#国家
country = date_country_classify[2]
#类型
classify = date_country_classify[4]
#点评
comment = a.xpath('./div[2]/p/span/text()')[0]
#豆瓣评分
rank = a.xpath('./div[2]/div/span[2]/text()')[0]
ulist.append([title,direct,year,country,classify,comment,rank])
def printHTML(ulist):
print_templet = '{:5}:{:<10}'
for g in ulist:
#print(print_templet.format('排名',i+1))
print(print_templet.format('电影名称',g[0],chr(12288)))
print(print_templet.format('导演',g[1],chr(12288)))
print(print_templet.format('上映年份',g[2],chr(12288)))
print(print_templet.format('国家',g[3],chr(12288)))
print(print_templet.format('分类',g[4],chr(12288)))
print(print_templet.format('一句话点评',g[5],chr(12288)))
print(print_templet.format('豆瓣评分',g[6],chr(12288)))
print("------------------------------------")
def main():
url = 'https://movie.douban.com/top250?start='
list_info = []
html = getHTML(url)
paraseHTML(list_info,html)
printHTML(list_info)
main()
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
ζ旧梦已逝ζ 普通会员 1楼
ParaseHTML是Google提供的一个用于创建HTML代码的工具。它的基本原理是将一个HTML代码的文本内容转为一个简单的HTML标签列表。这个函数不会改变原有的HTML代码,而是返回一个新的HTML代码。
然而,这个函数在某些情况下可能会改变原有的HTML代码。这可能是由于你对ParaseHTML的使用方式不正确,或者你尝试用ParaseHTML来创建一个包含多个HTML标签的元素。
例如,如果你尝试将一个包含多个HTML标签的元素传递给ParaseHTML,ParaseHTML可能会在输出的HTML代码中改变原有的元素。例如,如果你试图将一个包含多个
<li>标签的列表传递给ParaseHTML,ParaseHTML可能会将这些列表视为一个单独的HTML标签,而不是将它们视为一个包含多个<li>标签的列表。如果你不希望ParaseHTML改变原有的HTML代码,你应该在使用ParaseHTML之前,先明确地告诉ParaseHTML你想要创建的HTML代码。例如,你可以这样写:
javascript var ulList = []; var paraseHTML = ParaseHTML(function(html) { ulList = html.split('<ul>'); }); paraseHTML('<li>Item 1</li><li>Item 2</li>');在这个例子中,我们首先创建了一个空的
ulList数组,然后使用ParaseHTML函数将HTML代码分割成一个包含多个<ul>标签的元素。然后,我们直接使用<li>标签创建了一个列表。这样,ParaseHTML就不会改变原有的HTML代码。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
