吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1874|回复: 25
收起左侧

[Python 原创] 爬取豆瓣top250

[复制链接]
zake 发表于 2024-5-6 10:39

试着复习了下之前学习的爬虫,在看之前一些前辈发的帖子里面有些大佬说要防止反爬,就问了下gpt,试着加入了个随机等待时间。还有有通过黛——{}{}【黎】的方式来防止不知道咋买就没用。(之前看过有那种有滑块验证、拼图验证不知道各位大神是怎么处理的{:301_1004:} )

import random
import time
import requests
from lxml import etree
import pandas as pd

headers = {
    "User-Agent": ""#填入自己选择的伪装头
}

# 存储所有电影信息的列表
all_movies = []

# 循环爬取多页数据
for i in range(0, 250, 25):  # 每页有25部电影,共250部电影
    url = f"https://movie.douban.com/top250?start={i}&filter="
    response = requests.get(url=url, headers=headers)
    html = etree.HTML(response.text)
    rank = html.xpath('//div[@class="pic"]/em/text()')  # 排名
    name = html.xpath('//div[@class="hd"]/a/span[1]/text()')  # 电影名
    score = html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()')  # 评分
    people = html.xpath('//div[@class="star"]/span[4]/text()')  # 评分人数
    tu = list(zip(rank, name, score, people))
    all_movies.extend(tu)
    time.sleep(random.uniform(1, 2))  # 1-2秒再进行一次循环

df = pd.DataFrame(all_movies, columns=['排名', '电影名', '评分', '评分人数'])

print(df)

#输出表格
df.to_excel('top250_movies.xlsx', index=False)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| zake 发表于 2024-5-10 10:37
weisili2014 发表于 2024-5-10 08:57
是不是每个学习爬虫的都做过这个?

大部分应该都做过,个人认为是一个很经典的案例,还有爬取淘宝关键词下的商品信息、房产资源查找等等
最新的 发表于 2024-5-6 13:19
[Python] 纯文本查看 复制代码
import random
import time
import requests
from lxml import etree
import pandas as pd
from fake_useragent import UserAgent

# 生成随机的 User-Agent
ua = UserAgent()

# 存储所有电影信息的列表
all_movies = []

# 循环爬取多页数据
for i in range(0, 250, 25):  # 每页有25部电影,共250部电影
    url = f"https://movie.douban.com/top250?start={i}&filter="
    headers = {"User-Agent": ua.random}  # 随机选择一个 User-Agent
    response = requests.get(url=url, headers=headers)
    html = etree.HTML(response.text)
    rank = html.xpath('//div[@class="pic"]/em/text()')  # 排名
    name = html.xpath('//div[@class="hd"]/a/span[1]/text()')  # 电影名
    score = html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()')  # 评分
    people = html.xpath('//div[@class="star"]/span[4]/text()')  # 评分人数
    tu = list(zip(rank, name, score, people))
    all_movies.extend(tu)
    time.sleep(random.uniform(1, 2))  # 1-2秒再进行一次循环

df = pd.DataFrame(all_movies, columns=['排名', '电影名', '评分', '评分人数'])

print(df)

# 输出表格
df.to_excel('top250_movies.xlsx', index=False)
turmasi1234 发表于 2024-5-6 11:16
wkdxz 发表于 2024-5-6 11:27
哈哈哈,这豆瓣电影遭老罪了,pythoner必爬的项目......

UA可以考虑伪造一个

[Asm] 纯文本查看 复制代码
from fake_useragent import UserAgent

ua = UserAgent()

print(ua.firefox)  # 随机返回一个firefox浏览器user agent
print(ua.edge)
print(ua.chrome)
print(ua.safari)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zake + 1 + 1 我很赞同!

查看全部评分

njtqnijian 发表于 2024-5-6 11:43

感谢楼主的分享
 楼主| zake 发表于 2024-5-6 11:58
wkdxz 发表于 2024-5-6 11:27
哈哈哈,这豆瓣电影遭老罪了,pythoner必爬的项目......

UA可以考虑伪造一个

入门爬取的第一个就是他
cenoser795 发表于 2024-5-6 13:03
爬这个就是为了练手吧
bwuaich 发表于 2024-5-6 13:31
thank you for sharing;  learning
Tianshan 发表于 2024-5-6 14:16
python爬虫入门例子
往事随风0503 发表于 2024-5-6 14:26
很好的学习案例
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表