ssr1

发布时间 2023-07-09 18:55:56作者: 乐之之

  从今天开始,将会和一起进步学习爬虫的小伙伴一块学习,讨论一下崔庆才的练习网站,分享一下自己在解决反爬网站的一些思路...

  开始崔庆才的爬虫练习网站练习,后面会持续更新一系列关于该练习网站的每个练习案例的博客,用来练习和复习自己在细节知识点上掌握的不足。那么今天先看一下崔庆才的练习网站的一些简介:

  网站:Python爬虫案例 | Scrape Center

类目

  • ssr:无反爬的电影数据网站,主要根据网页的渲染方式、http协议和响应延迟进行对应的调试和设置。
  • spa:同样以电影网站为例,部分无反爬,通过ajax和动态渲染响应页面数据。还有些球星数据网站,经过js渲染页面数据,这块需要一些js逆向调试的分析。
  • tool(工具网站:用于获取公用的代理ip)
  • captcha:验证码检测进行登录的网站,包括滑块、点选、语序验证和空间推理等验证码的校验。
  • login:登录所需的参数js逆向分析。
  • websocket:对websocket的底层运行逻辑需要熟悉掌握,如tcp和udp两种协议的理解,进行抓包分析。
  • antispider:这里会需要用一些反爬网站的常见反爬措施,如selenium的反检测、ua、ip和频率的检测,以及爬虫进阶操作,debugger、js字符串、数组混淆和控制流扁平化反爬。
  • appbasic:关于app的精简样例的逆向和hook分析。
  • app:基本的app案例抓包和逆向分析。

接下来我们看一下ssr1:

  该网站无反爬,只需要做一些最基本的requests请求和xpath解析即可,所有在这里就先不做具体分析,代码如下:

查看代码

import requests
from lxml import etree
"""
    1、根据第一层的目录获取url请求第二层的内容,解析保存至txt文件
"""

headers = {
    "Accept": "application/json, text/plain, */*",
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
    "Cache-Control": "no-cache",
    "Connection": "keep-alive",
    "Pragma": "no-cache",
    "Referer": "https://spa2.scrape.center/page/1",
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57",
}


# 页面1
def get_parse_page1(i):
    url = f'https://ssr1.scrape.center/page/{i}'

    resp = requests.get(url=url, headers=headers)
    html = etree.HTML(resp.text)
    content_list = html.xpath('.//div[@class="p-h el-col el-col-24 el-col-xs-9 el-col-sm-13 el-col-md-16"]')
    for data in content_list:
        href = data.xpath('.//a[@class="name"]/@href')[0]
        get_parse_page2(href)


# 页面2
def get_parse_page2(href):
    url = f'https://ssr1.scrape.center{href}'
    resp = requests.get(url, headers=headers)
    html = etree.HTML(resp.text)
    content_list = html.xpath('.//div[@class="p-h el-col el-col-24 el-col-xs-16 el-col-sm-12"]')
    # print(resp.text)
    for data in content_list:
        title = data.xpath('.//a/h2/text()')[0]
        # print(title)
        category = data.xpath('.//div[@class="categories"]//button/span/text()')
        area = data.xpath('./div[@class="m-v-sm info"]//span/text()')
        content = str(data.xpath('.//div[@class="drama"]/p/text()')[0]).strip()
        score = str(html.xpath('.//div[@class="el-col el-col-24 el-col-xs-8 el-col-sm-4"]/p/text()')[0]).strip()
        with open(f'{title}.txt', 'a', encoding='utf-8') as f:
            f.write(title + '\n' + str(category) + '\n' + str(area) + '\n' + content + '\n' + score)
        print(title, category, area, score)


if __name__ == '__main__':
    for i in range(10):
        get_parse_page1(i)

  通过运行以上代码,可以获得多个txt文件,每个文件写着电影文件标题相对应的电影内容简介。

  这样就成功获取了该电影网站的信息内容,ssr1的练习到这里也就结束了。

  从上面9个类目中可以看出,涉及的爬虫练习案例很全面,对自己而言有些也是没有涉及到,相信通过一步一步来,一定可以掌握这些知识的难点和解决思路。

  今天对爬虫练习网站的练习和学习知识点的简单分类及规划,在空余的时间,尽可能掌握这些难点。回想以上知识点的内容和即将面临去钻研的知识点大致内容,任重道远...还希望涉及到该领域的小伙伴和大佬多多指点。