三滑稽甲苯 发表于 2022-1-11 23:46

[Scrape Center - ssr1]新手向静态页面爬虫

本帖最后由 三滑稽甲苯 于 2022-1-11 23:46 编辑

# 前言
题目地址:https://ssr1.scrape.center/
主网站地址:https://scrape.center/
这是一个专供爬虫练习的网站,里面有各种类型的题目。我们从最简单的第一个开始,这个题目没有任何反爬措施,并且是静态网页,抓包都不用了。

# 过程
打开页面,单击下一页,网址变为:https://ssr1.scrape.center/page/2
观察到一共有10页,于是使用`for i in range(1, 10):`来实现页数的遍历,使用`f'{url}/page/{i}'`(事先`url = 'https://ssr1.scrape.center'`)拼接网址
F12审查元素,可以通过`el-card__body`这个class来遍历到所有的卡片

通过`name`定位电影名,通过`a`标签的`href`属性辅以url拼接定位详情页面的链接

通过`categories`定位一组标签,`button`定位各个标签

通过`info`定位国家、时长、上映时间

通过`score`定位评分(这里需要数据清洗,因为直接获取text属性的话前面会有回车和空格)


# 完整代码
```python
from requests import Session
from bs4 import BeautifulSoup as bs
from time import time

start = time()
x = Session()
url = 'https://ssr1.scrape.center'
for i in range(1, 10):
    r = x.get(f'{url}/page/{i}')
    soup = bs(r.text, 'html.parser')
    cards = soup.find_all('div', class_='el-card__body')
    print(f'Page {i}/10')
    for card in cards:
      print()
      print(' ', card.h2.text)
      tags = card.find('div', class_='categories').find_all('span')
      print('Score:', card.find('p', class_='score').text[-3:])
      print('Tags:', ' '.join(.text for i in range(len(tags))]))
      infos = card.find_all('div', class_='info')
      spans = infos.find_all('span')
      print('Country:', spans.text)
      print('Duration:', spans.text)
      print('Release date:', infos.text[-1:-3])
      print('Link:', url + card.find('a', class_='name')['href'])
    print()
print(f'Time used: {time() - start}s')
```

# 效果图

mzhsohu 发表于 2022-1-12 00:00

虽然看不懂,感谢分享~!

tqp 发表于 2022-1-12 09:46

感谢分享~!

shihdhr 发表于 2022-1-13 11:26

感谢分享,学习了
页: [1]
查看完整版本: [Scrape Center - ssr1]新手向静态页面爬虫