爬虫学习-scrape center闯关(ssr系列)

场景

最近在学习爬虫,实践使用的是https://scrape.center/ 网站环境
网站的环境是一个系列的,一个系列中不通关卡考验的是小技巧,目前的环境是第一个环境,结果爬取的是所有的电影地址,标题,主题,分数,剧情简介

技术

主要使用的是request库和BeautifulSoup,最后导出一个csv文档

关卡

第一关 ssr1

电影数据网站,无反爬,数据通过服务端渲染,适合基本爬虫练习。

import pandas as pd
import urllib3
from bs4 import BeautifulSoup
import requests

urllib3.disable_warnings()  #去除因为网页没有ssl证书出现的警告
url,title,theme,score,content = [],[],[],[],[]
headers =  {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/87.0.4280.141 Safari/537.36'}
global url_list,title_list,theme_list,score_list,content_list
for i in range(1,11):
    the_url = 'https://ssr1.scrape.center/page/' + str(i)
    html = requests.get(the_url,headers=headers,verify=False)
    soup = BeautifulSoup(html.content,'lxml')
    url_list = soup.find_all(class_='name')
    for x in url_list :
        url.append('https://ssr1.scrape.center'+x['href'])
for a in url :
    html = requests.get(a,headers=headers,verify=False)
    soup = BeautifulSoup(html.content, 'lxml')
    title_list = soup.find_all(class_='m-b-sm')
    theme_list = soup.find_all(class_='categories')
    score_list = soup.find_all(class_='score m-t-md m-b-n-sm')
    content_list = soup.find_all("div",class_='drama')
    for y,z,i,x in zip(title_list,theme_list,score_list,content_list):
        title.append(y.text)
        theme.append(z.text.replace('\n','').replace('\r',''))
        score.append(i.text.strip())
        content.append(x.text.replace('剧情简介','').replace('\n','').replace('\r','').strip())
bt = {
    '链接':url,
    '标题':title,
    '主题':theme,
    '评分':score,
    '剧情简介':content
}
work = pd.DataFrame(bt)
work.to_csv('work.csv')

第二关 ssr2

电影数据网站,无反爬,无 HTTPS 证书,适合用作 HTTPS 证书验证。

上关代码可以继续使用,能够爬取结果

第三关 ssr3

电影数据网站,无反爬,带有 HTTP Basic Authentication,适合用作 HTTP 认证案例,用户名密码均为 admin。

这一关主要考验的是网站初始登录HTTP认证,在代码第一次访问网站中添加认证

    auth = HTTPBasicAuth('admin','admin')
    html = requests.get(the_url,headers=headers,auth=auth,verify=False)

总代码

import pandas as pd
import urllib3
from bs4 import BeautifulSoup
import requests
from requests.auth import HTTPBasicAuth

urllib3.disable_warnings()  #去除因为网页没有ssl证书出现的警告
url,title,theme,score,content = [],[],[],[],[]
headers =  {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/87.0.4280.141 Safari/537.36'}
global url_list,title_list,theme_list,score_list,content_list
for i in range(1,11):
    the_url = 'https://ssr3.scrape.center/page/' + str(i)
    auth = HTTPBasicAuth('admin','admin')
    html = requests.get(the_url,headers=headers,auth=auth,verify=False)
    soup = BeautifulSoup(html.content,'lxml')
    url_list = soup.find_all(class_='name')
    for x in url_list :
        url.append('https://ssr1.scrape.center'+x['href'])
for a in url :
    html = requests.get(a,headers=headers,verify=False)
    soup = BeautifulSoup(html.content, 'lxml')
    title_list = soup.find_all(class_='m-b-sm')
    theme_list = soup.find_all(class_='categories')
    score_list = soup.find_all(class_='score m-t-md m-b-n-sm')
    content_list = soup.find_all("div",class_='drama')
    for y,z,i,x in zip(title_list,theme_list,score_list,content_list):
        title.append(y.text)
        theme.append(z.text.replace('\n','').replace('\r',''))
        score.append(i.text.strip())
        content.append(x.text.replace('剧情简介','').replace('\n','').replace('\r','').strip())
bt = {
    '链接':url,
    '标题':title,
    '主题':theme,
    '评分':score,
    '剧情简介':content
}
work = pd.DataFrame(bt)
work.to_csv('work.csv')

第四关 ssr4

电影数据网站,无反爬,每个响应增加了 5 秒延迟,适合测试慢速网站爬取或做爬取速度测试,减少网速干扰。

这关主要是限制了延迟,在网站中添加超时时间,因为他设置的是5秒延迟,但是在实际测试还有其他的延迟,所以需要15秒左右以上的时间进行访问,不然会访问超时

html = requests.get(the_url,headers=headers,verify=False,timeout=15)

在这里因为延迟关系,所以只爬取第一页,并没有所有爬取

总代码

import pandas as pd
import urllib3
from bs4 import BeautifulSoup
import requests

global url_list, title_list, theme_list, score_list, content_list
urllib3.disable_warnings()  #去除因为网页没有ssl证书出现的警告
url,title,theme,score,content = [],[],[],[],[]
headers =  {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                             'Chrome/87.0.4280.141 Safari/537.36'}
the_url = 'https://ssr4.scrape.center/page/1'
html = requests.get(the_url,headers=headers,verify=False,timeout=15)
soup = BeautifulSoup(html.content,'lxml')
url_list = soup.find_all(class_='name')
for x in url_list :
    url.append('https://ssr1.scrape.center'+x['href'])
for a in url :
        html = requests.get(a,headers=headers,verify=False,timeout=15)
        soup = BeautifulSoup(html.content, 'lxml')
        title_list = soup.find_all(class_='m-b-sm')
        theme_list = soup.find_all(class_='categories')
        score_list = soup.find_all(class_='score m-t-md m-b-n-sm')
        content_list = soup.find_all("div",class_='drama')
        for y,z,i,x in zip(title_list,theme_list,score_list,content_list):
            title.append(y.text)
            theme.append(z.text.replace('\n','').replace('\r',''))
            score.append(i.text.strip())
            content.append(x.text.replace('剧情简介','').replace('\n','').replace('\r','').strip())
bt = {
        '链接':url,
        '标题':title,
        '主题':theme,
        '评分':score,
        '剧情简介':content
    }
work = pd.DataFrame(bt)
work.to_csv('work.csv')



  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫登录https://captcha8.scrape.center/的过程可以分为以下几个步骤: 1. 首先需要分析登录页面的HTML代码,找到用户名和密码的输入框以及登录按钮的位置。 2. 使用requests向登录页面发送POST请求,将用户名和密码作为参数传递给服务器。 3. 服务器会验证用户名和密码的正确性,如果验证通过,会返回一个包含登录凭证的响应。 4. 使用登录凭证向目标页面发送请求,获取需要的数据。 在具体实现中,需要注意以下几点: 1. 需要使用session对象来保持登录状态,否则每次请求都需要重新登录。 2. 需要处理验证码,可以使用第三方或手动输入验证码的方式。 3. 需要处理登录失败的情况,例如用户名或密码错误等。 以下是一个简单的爬虫登录https://captcha8.scrape.center/的示例代码: ```python import requests def login(): # 创建session对象 session = requests.Session() # 构造登录请求参数 data = { 'username': 'your_username', 'password': 'your_password', 'captcha': 'your_captcha' } # 发送登录请求 response = session.post('https://captcha8.scrape.center/login', data=data) # 检查登录是否成功 if response.status_code == 200 and 'Welcome' in response.text: print('登录成功!') else: print('登录失败!') # 使用登录凭证向目标页面发送请求 response = session.get('https://captcha8.scrape.center/dashboard') print(response.text) if __name__ == '__main__': login() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值