编码版的xpath,运行后啥结果没有
回答
收藏

编码版的xpath,运行后啥结果没有

博瑞小瑞
2024-08-12 16:58·浏览量:279
博瑞小瑞
影刀高级开发者
发布于 2024-08-12 16:58279浏览

import xbot

from xbot import print, sleep

from .import package

from .package import variables as glv

import html

import pd,re,requests

def main(args):

 def movie_analysis():


   # 打开网页

   url = "http://www.boxofficecn.com/the-red-box-office"

   response = requests.get(url)

   # 使用xpath获取评分、电影名称、制片地区

   tree = html.fromstring(response.content)

   # 获取电影名称,评分

   movie = tree.xpath('//*[@id="tablepress-4"]/tbody/tr/td[2]/text()[1]')

   # 获取上映年份

   years = tree.xpath('//*[@id="tablepress-4"]/tbody/tr/td[1]/text()')

   # 获取制片地区

   regions = tree.xpath('//*[@id="tablepress-4"]/tbody/tr/td[1]/img/@alt')

   # 获取导演

   director = tree.xpath('//*[@id="tablepress-4"]/tbody/tr/td[3]/text()')

   # 获取票房

   box_office = tree.xpath('//*[@id="tablepress-4"]/tbody/tr/td[4]/text()|//*[@id="tablepress-4"]/tbody/tr/td[4]/font')

   # 获取各列的长度

   lengths = [len(years), len(movie), len(regions), len(director), len(box_office)]

   # 找到最小长度

   min_length = min(lengths)

   # 截断或填充各列数据,使它们的长度一致

   years = years[:min_length]

   movie = movie[:min_length]

   regions = regions[:min_length]

   director = director[:min_length]

   box_office = box_office[:min_length]

   # 将评分、电影名称、制片地区数据获取到表格里面

   data = {'上映年份': years, '电影': movie, '制片地区': regions,'导演':director,'票房':box_office}

   df = pd.DataFrame(data)

   # 新增提交人列

   df['提交人'] = 'Iisi11'

   # 对电影列进行拆分

   df['电影名称'] = df['电影'].apply(lambda x: re.match(r'(.+?)((\d+\.\d+))', x).group(1))

   df['评分'] = df['电影'].apply(lambda x: float(re.match(r'(.+?)((\d+\.\d+))', x).group(2)))

   # 选取需要的列

   df_result = df[['电影名称', '上映年份', '制片地区','评分', '导演', '票房','提交人']]

   print(df_result)

   df_result.to_excel(r'C:\Users\gexueyan95\Desktop\111.xlsx', index=False)

   return df_result

收藏
全部回答1
最新
发布回答
回答