Re解析实战——获取豆瓣电影TOP250

代码:

import requests
import re
import csv

# 获取网页内容
for start_num in range(0,250,25):

    url=f"https://movie.douban.com/top250?start={start_num}&filter="
    head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"}
    response=requests.get(url,headers=head)
    content=response.text

    # 解析网页内容
    # 预加载正则;精细筛选用分组
    obj=re.compile(r' <a href=".*?" class="">.*?<span class="title">(?P<name>.*?)</span>'
                r'.*?<p class="">.*?<br>.*?(?P<year>\d+).*?&nbsp.*?</p>'
                r'.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>'
                r'.*?<span>(?P<num>.*?)人评价</span>',re.S)
    iter=obj.finditer(content)

    f=open("data.csv",mode="a",encoding="utf-8")
    csvwriter=csv.writer(f)

    for i in iter:
        # print(i.group("name"))
        # print(i.group("year"))
        # print(i.group("score"))
        # print(i.group("num"))
        dic=i.groupdict()
        csvwriter.writerow(dic.values())

    f.close()

print("over!")

注意:

1、有些年份是“1995(中国大陆)”这样子的,后面不直接跟&nbsp,所以要用.*?来省略掉无关内容,也可以省略掉空格

2、多个r' '是用来换行展示的

3、CSV(Comma-Separated Values)是一种常见的文件格式,用于存储表格数据

它是一种纯文本格式,每行代表表格中的一行数据,每个字段之间用逗号分隔。

Python标准库中含有csv模块,可以直接import csv

4、

f=open("data.csv",mode="a",encoding="utf-8")
    csvwriter=csv.writer(f)

 mode="a"表示以追加模式打开文件

encoding="utf-8"指定了文件的编码格式为UTF-8,这样可以处理中文等特殊符号

csv.writer(f)创建了一个CSV writer对象,它用于向CSV文件中写入数据

这个CSV writer对象允许你使用它的方法(比如“writerow()”)将列表或元组的数据写入CSV文件中

5、

dic=i.groupdict()
csvwriter.writerow(dic.values())

groupdict()返回一个包含所有命名组的字典,其中键是组名,值是匹配到的内容

(比如:"name": "***", "year": "***", "score": "***", "num": "***")

然后将结果保存到一个叫“dic”的变量中

dic.values()返回字典中所有的值,作为一个迭代器

csvwriter.writerow():通过使用CSV writer对象csvwriter的writerow方法,将数据写入对象关联的文件中(注意:参数是一个可迭代对象)

好的,现在我将为你介绍一个爬虫快速入门案例——豆瓣电影Top250。 首先,你需要准备以下工具和库: 1. Python编程环境 2. requests库:用于发送HTTP请求获取网页内容 3. BeautifulSoup库:用于解析HTML页面 4. pandas库:用于数据处理和存储 下面是一个简单的爬虫代码示例: ```python import requests from bs4 import BeautifulSoup import pandas as pd def get_movie_info(movie_url): response = requests.get(movie_url) soup = BeautifulSoup(response.text, 'html.parser') # 获取电影名称 movie_name = soup.find('span', class_='title').text # 获取电影评分 rating = soup.find('span', class_='rating_num').text # 获取电影信息 info = soup.find('div', class_='info') director = info.find('a').text actors = [a.text for a in info.find_all('a')[1:]] movie_info = { '电影名称': movie_name, '评分': rating, '导演': director, '演员': actors } return movie_info def crawl_top250_movies(): base_url = 'https://movie.douban.com/top250' movies = [] for start in range(0, 250, 25): url = f'{base_url}?start={start}' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') movie_items = soup.find_all('div', class_='item') for movie_item in movie_items: movie_url = movie_item.find('a')['href'] movie_info = get_movie_info(movie_url) movies.append(movie_info) return movies movies = crawl_top250_movies() df = pd.DataFrame(movies) df.to_csv('top250_movies.csv', index=False) print('豆瓣电影Top250爬取完成并保存为top250_movies.csv文件。') ``` 这段代码会爬取豆瓣电影Top250的电影名称、评分、导演和演员信息,并将结果保存为一个CSV文件。 注意:爬虫是一种获取网页数据的技术,请务必尊重网站的使用规则,不要频繁发送请求或者对网站造成过大的负载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值