requests结合正则表达式爬取猫眼电影top100

import requests
import re
import json
def get_page(url):
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'}
    response = requests.get(url,headers=headers)
    if response.status_code==200:
        return response.text
    return None

def main():
    for offpage in range(0,10):        
        url = 'https://maoyan.com/board/4?offset='+str(offpage)
        html = get_page(url)
        content=parse_page(html)
        for res in content:
            write_file(res)

def parse_page(html):
    pattern = re.compile(
        '<dd>.*?board-.*?<p class="name".*?<a.*?>(.*?)</a>.*?<p.*?"star">(.*?)</p>.*?<p.*?"releasetime">(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>',re.S) 
    items = re.findall(pattern,html)
    for item in items:
        yield [item[0].strip(),item[1].strip(),item[2].strip(),item[3]+item[4]]
        
def write_file(content):
    with open('猫眼电影.txt','a',encoding='utf-8') as f:
        result = json.dumps(content,ensure_ascii=False)
        f.write(result+'\n')


if __name__=='__main__':
        
    main()

 

以下是用Python的requestsxpath正则表达式爬取豆瓣电影top250详情页的代码: ```python import requests from lxml import etree import re def get_movie_details(url): # 发送请求获取页面内容 response = requests.get(url) html = response.content.decode('utf-8') # 解析页面内容 selector = etree.HTML(html) # 获取电影名称 movie_name = selector.xpath('//h1/span/text()')[0] # 获取导演和主演信息 director_and_cast = selector.xpath('//div[@id="info"]/span[1]/span[@class="attrs"]/a/text()') director = director_and_cast[0] cast = director_and_cast[1:] # 获取上映年份、地区、类型 year_country_type = selector.xpath('//div[@id="info"]/text()') year = re.findall('\d{4}', year_country_type[1])[0] country = year_country_type[2].strip().split('/')[0] type = year_country_type[2].strip().split('/')[-1] # 获取评分和评价人数 rating = selector.xpath('//strong[@class="ll rating_num"]/text()')[0] rating_num = selector.xpath('//div[@class="rating_sum"]/a/span/text()')[0] # 获取电影简介 summary = selector.xpath('//div[@class="indent"]/span[@class="all hidden"]/text()')[0] # 构造电影信息字典 movie_info = { '名称': movie_name, '导演': director, '主演': cast, '年份': year, '地区': country, '类型': type, '评分': rating, '评价人数': rating_num, '简介': summary.strip(), } return movie_info if __name__ == '__main__': urls = ['https://movie.douban.com/top250?start={}'.format(i) for i in range(0, 250, 25)] for url in urls: response = requests.get(url) html = response.content.decode('utf-8') selector = etree.HTML(html) # 获取电影详情页链接 movie_links = selector.xpath('//div[@class="hd"]/a/@href') for link in movie_links: movie_info = get_movie_details(link) print(movie_info) ``` 这段代码会爬取豆瓣电影top250列表页面中每部电影的详情页,并从详情页中提取电影名称、导演和主演、上映年份、地区、类型、评分、评价人数、电影简介等信息,并打印出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值